【问题标题】:jQuery ajax() function is ignoring dataType parameter in FirefoxjQuery ajax() 函数忽略 Firefox 中的 dataType 参数
【发布时间】:2013-06-30 03:28:41
【问题描述】:

我正在尝试使用 jQuery.ajax() 来获取一些 html,但是 Firefox 给我一个“文档元素后的垃圾”错误消息。正如herehere 解释的那样,问题似乎是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


【解决方案1】:

HTML 响应的外观如何?如果还没有,我会尝试确保响应以第一行的 doctype 声明开头,如 <!doctype html>

如果运气好的话,这可以让 Firefox 的内容类型检测走上正轨。

【讨论】:

    【解决方案2】:

    好的,你可以试试"HTML",而不是"html"

    【讨论】:

    • 你确定吗?你确定吗?
    猜你喜欢
    • 2012-12-28
    • 2011-06-07
    • 2021-02-18
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    相关资源
    最近更新 更多