jquery - 通过 jQuery.ajax 在 Firefox 中加载客户端 JSON 时出现 "not well-formed"警告

标签 jquery ajax json mime-types firefox3.6

我正在使用 jQuery 的 ajax 方法来获取静态 JSON 文件。数据是从本地文件系统加载的,因此没有服务器,因此我无法更改 MIME 类型。

这在 Safari 中工作正常,但 Firefox (3.6.3) 报告该文件“格式不正确”。我知道并查看了 Stack Overflow 上的类似帖子:

"not well-formed" error in Firefox when loading JSON file with XMLHttpRequest

我相信我的 JSON 格式良好:

{
    "_": ["appl", "goog", "yhoo", "vz", "t"]
}

我的 ajax 调用很简单:

$.ajax({
    url: 'data/tickers.json', 
    dataType: 'json',
    async: true,
    data: null,
    success: function(data, textStatus, request) {
        callback(data);
    }
});

如果我用文档标签包装 JSON:

<document>JSON data</document>

正如上面提到的另一个 Stack Overflow 问题中提到的,ajax 调用失败并出现解析错误。

那么:有没有办法在读取客户端 JSON 文件时避免 Firefox 警告?

最佳答案

有时不能选择使用 HTTP 服务器,这可能意味着不会自动为某些文件提供 MIME 类型。改编自 Peter Hoffman 对 jQuery .getJSON Firefox 3 Syntax Error Undefined 的回答,在进行任何 $.getJSON() 调用之前使用此代码:

$.ajaxSetup({beforeSend: function(xhr){
  if (xhr.overrideMimeType)
  {
    xhr.overrideMimeType("application/json");
  }
}
});

或者,如果您使用 $.ajax():

$.ajax({
  url: url,
  beforeSend: function(xhr){
    if (xhr.overrideMimeType)
    {
      xhr.overrideMimeType("application/json");
    }
  },
  dataType: 'json',
  data: data,
  success: callback
});

关于jquery - 通过 jQuery.ajax 在 Firefox 中加载客户端 JSON 时出现 "not well-formed"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2618959/

相关文章:

javascript - 如何从选项 select - json 对象中获取特定值

c# - 如何将此格式的 JSON 返回到字符串数组中

javascript - textarea 在文本溢出时扩展一行

javascript - 阻止 onClick 函数

jquery - JQuery 中的网络图/流程图

javascript - 使用 AJAX 或类似技术来缩小现有列表的范围

ruby-on-rails - 如何为多记录 Rails 表单中的复选框设置唯一 ID?

javascript - 根据列表中的选择更改 div 的内容

javascript - 在离开页面时进行 ajax 调用

json - 将 JSON 模型可视化为域模型