【发布时间】:2013-06-30 03:28:41
【问题描述】:
我正在尝试使用 jQuery.ajax() 来获取一些 html,但是 Firefox 给我一个“文档元素后的垃圾”错误消息。正如here 和here 解释的那样,问题似乎是Firefox 期望来自服务器的XML,并且当它没有正确解析时会抛出错误。这是我的 ajax 代码:
jQuery.ajax({
url: name,
dataType: "html",
success: function(result) {
console.log(result);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
服务器返回带有这些响应头的html:
Accept-Ranges bytes
Content-Length 2957
Last-Modified Tue, 02 Jul 2013 16:16:59 GMT
请注意,没有内容类型标头。我确信添加一个可以解决问题,但这不是一种选择。
真正的问题是 Firefox 似乎忽略了 ajax 调用中的 dataType: 参数。我也尝试添加 contentType: 并接受:参数,但没有帮助。
我在这里缺少什么?如何强制 Firefox 将响应作为纯文本处理?
【问题讨论】:
-
RoR ... FireFox ... bleh,听起来您正在与浏览器中的新 IE 作斗争,而且...好吧,关于 RoR 从来没有什么好说的。我仍然没有看到它的用途。就像我不想说的那样,这要么是
Content-type标头的问题,要么你需要仔细检查,也许是另一个浏览器中的 var_dump,或者将其写入文件,但仔细检查你的 XML 是否在正确的模式中 -
谢谢,但它不是 XML。它是 HTML。
-
啊,我看错了。嗯....您是否尝试过将 HTML 的简单
echo作为字符串?当然,我建议您将结果作为console.log($('<div />').html(result))进行控制台。这样您就可以将其视为 jQuery 对象,而不是控制台中的巨大字符串。这也使您能够使用.find解析 HTML -
@ccleve 尝试将
dataType : 'text'设置为纯文本。如果做不到这一点,请尝试dataType : 'xml text',它告诉 jQuery 将所有 XML 转换为纯文本(值得一试)。你用的是什么版本的jQuery? -
我刚试过。 'text' 给出了同样的错误。 'xml text' 两次给出相同的错误,这很奇怪。我使用的是 jQuery 1.9.1,但我刚刚升级到 2.0.2,它产生了同样的错误。
标签: javascript ajax jquery firefox