我使用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 });