XML 解析错误:在 FireFox 中格式不正确,但在 Chrome 中格式良好
Posted
技术标签:
【中文标题】XML 解析错误:在 FireFox 中格式不正确,但在 Chrome 中格式良好【英文标题】:XML Parsing Error: not well-formed in FireFox but good in Chrome 【发布时间】:2011-11-30 07:53:58 【问题描述】:我使用 jQuery Ajax,如下所示:
$.ajax(
url: 'servlet/*****Servlet',
dataType: "text",
success: function(data)
var subareaCoordsPGs = preprocessCoords(data);
);
即使我没有在 Chrome 中设置 dataType,它也能正常工作,但是,它在 FF 中失败并出现 XML 解析错误。
响应头视图源 服务器 Apache-Coyote/1.1 传输编码分块 2011 年 10 月 4 日星期二 00:08:08 GMT 请求标头查看源 Host localhost:8080 用户代理 Mozilla/5.0 (Windows NT 5.2; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 接受 text/plain, /; q=0.01 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate 接受字符集 ISO-8859-1,utf-8;q=0.7,;q=0.7 连接保持活动 X-Requested-With XMLHttpRequest 引用者http://localhost:8080/*/ Cache-Control max-age=0
XML 解析错误:格式不正确 位置: moz-nullprincipal:2f6a8381-b987-448b-88c2-e89c4e13440b 行号 1、第4栏:
534@151.248078368847 -33.9353900931769,151.247877472978 -33.9360784582012,151.24... ------^
搜索后,我知道设置正确的数据类型很好,我希望它像普通文本一样被解析,但是为什么 Intelligent Guess 在 FF 中不起作用,即使我设置了它的类型"text" 是明确的吗?
【问题讨论】:
请注意,即使您收到此消息,您的成功调用也可能会被数据触发。最新版本的 Firefox 可能会抱怨,但随后仍会继续,或者至少在我的情况下 Firefox 55 确实如此。在我认为它是致命的时,这条错误消息在一段时间内对我来说是一个红鲱鱼。 @J.Allen:我面临同样的问题。我在最新版本的 Firefox 中看到了这个问题。有什么解决办法吗? 【参考方案1】:您的服务器没有返回内容类型,因此 Firefox 假设由于这是 _XML_HttpRequest 您的响应可能是 XML 并尝试解析它。当失败时,它会停止尝试并报告这毕竟不是 XML。
Chrome 可能会这样做,但不会报告任何内容。
我建议实际发送一个 Content-Type 标头来指示您的数据是什么。
【讨论】:
感谢您的提示。我已经使用 jQuery Ajax 设置了 Content-Type text/plain;charset=UTF-8 就像设置参数 contentType:"text/plain; charset=UTF-8",它仍然适用于 Chrome,但不适用于 FireFox @qc999 我不知道 jQuery 的作用。它会在 XHR 对象上调用 overrideMimeType 吗? @qc999 请求标头不是问题。问题是 Content-Type 的 response 标头是什么。而且您的服务器没有发送。所以 XHR 回退到假设它是 XML,除非通过overrideMimeType
另有说明。
@Boris Zbarsky 感谢您的帮助,我发现错误仍然存在。但如果我将 dataType 设置为“文本”,则 FireFox 可以解析它。甚至一些 Gson 仍然需要被解析为纯文本。
为了设置正确的内容类型,我在 Appache 或 .htaccess 中设置了配置: AddType text / plain .hbs (所有 * .hbs 都应附带内容类型文本。) Firefox 很高兴。【参考方案2】:
只需添加此代码。问题是服务器没有指定 mime 类型,firefox 将其视为 xml。此代码将指定 xhr 响应的 Mime 类型。
beforeSend: function(xhr) xhr.overrideMimeType( "text/plain; charset=x-user-defined" );,
【讨论】:
或者更短一点::beforeSend: function(xhr) xhr.overrideMimeType( "text/plain; charset=utf-8" );,
以上是关于XML 解析错误:在 FireFox 中格式不正确,但在 Chrome 中格式良好的主要内容,如果未能解决你的问题,请参考以下文章