【问题标题】:How can I get AJAX requests in Firefox to not parse the result?如何在 Firefox 中获取 AJAX 请求而不解析结果?
【发布时间】:2015-06-21 00:06:32
【问题描述】:

以下代码适用于 Safari 和 Chrome,也就是说,它会在浏览器窗口中显示自身的副本:

<script src=https://code.jquery.com/jquery-2.1.3.min.js></script>
<script>
  function html_escape(s) { return $('<div/>').text(s).html(); }

  var url = document.location.href;
  $.get(url, function(data,status) {
    document.write('<pre>');
    document.write(html_escape(data));
    document.write('</pre>');
  });
</script>

但在 Firefox 中它失败并出现错误“格式不正确”,我认为这是因为 FF 试图将文件的内容解析为 XML。如何阻止 FF 尝试解析文件?

更新:问题仅在我从 FILE: URL 运行时才会出现,因此没有 MIME 类型。但这实际上是我的用例。

【问题讨论】:

  • 我很好奇;为什么要对您已经在的页面执行$.get() 请求?为什么不直接使用$('html')[0].outerHTML?你检查过mime type is correct吗?
  • 拥有页面请求本身只是我能想到的生成问题的独立示例的最简单方法。而且我现在才意识到问题仅在我从 FILE: URL 运行时才会出现,因此没有 MIME 类型。但这实际上是我的用例。

标签: ajax firefox


【解决方案1】:

事实证明,jquery AJAX 请求中 dataType 参数的默认值是“智能猜测”。出于某种原因,在 FireFox 中,这种智能猜测与 Safari 和 Chrome 不同,因此您必须将 dataType 显式设置为 'html' 才能使其工作。所以例如添加以下行:

  $.ajaxSetup({dataType: 'html'});

解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多