我正在使用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警告?
有时不能使用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 });