通过jQuery.ajax在Firefox中加载客户端JSON时,会出现“格式不正确”的警告

前端之家收集整理的这篇文章主要介绍了通过jQuery.ajax在Firefox中加载客户端JSON时,会出现“格式不正确”的警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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");
    }
  },data: data,success: callback
});

猜你在找的jQuery相关文章