小编典典

通过jQuery.ajax在Firefox中加载客户端JSON时出现“格式错误”警告

ajax

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

我相信我的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警告?


阅读 248

收藏
2020-07-26

共1个答案

小编典典

有时不能使用HTTP服务器,这可能意味着不会为某些文件自动提供MIME类型。改编自彼得·霍夫曼(Peter Hoffman)的jQuery.getJSON Firefox 3语法错误未定义答案,在进行任何$ .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
});
2020-07-26