Uncaught SyntaxError:无法在’Element’上设置’innerHTML’属性:提供的标记是无效的XML

我正在尝试在我的Rails 4应用程序中添加datetimepicker。 我决定尝试这个: https : //github.com/Eonasdan/bootstrap-datetimepicker 。

说明相对简单,但是当我加载页面时,我收到以下JS错误消息:

Uncaught SyntaxError: Failed to set the 'innerHTML' property on 'Element': The provided markup is invalid XML, and therefore cannot be inserted into an XML document. 

如果我暂停在JQuery.extend.buildfragment中发生这种情况的行:

 tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "" ) + wrap[2]; 

我看到它正在尝试将innerHTML设置为:

  

大多数XMLvalidation器抱怨 价值无效。 但是,我无法控制如何构造此字符串,因为它在jquery中是内部的。 我知道datetimepicker适用于大多数人没有任何问题,所以这在我的环境中似乎有些不对劲。

XHTML不支持document.write.innerHTML 。 由于jQuery使用这些方法之一插入新代码,因此所有兼容XHTML的浏览器都会出错。

带有application/xhtml+xml不支持使用以下任何jQuery方法对源进行原始修改: .append() .html() .insert...()等。

相反,查询一些JSON数据并使用.text() / .val()将AJAX接收的值插入到预定义的标记中,或使用document.createElement('someTag')动态创建这些节点。

https://www.w3.org/MarkUp/2004/xhtml-faq#docwrite

问题是该页面被提供为XHTML + XML而不是HTML(归功于@Pointy指出这一点)。

我发现在我的application_controller.rb中,有一行如下:

  before_filter{ response.content_type = 'application/xhtml+xml' } 

我实际上并不知道为什么这条线存在,但删除这条线解决了这个问题,并允许我前进。