通过jQuery.ajax在Firefox中加载客户端JSON时出现“格式不正确”的警告
我正在使用jQuery的ajax方法来获取静态JSON文件。 数据从本地文件系统加载,因此没有服务器,因此我无法更改MIME类型。
这在Safari中运行良好,但Firefox(3.6.3)报告该文件“格式不正确”。 我知道并已经在Stack Overflow上查看过类似的post:
使用XMLHttpRequest加载JSON文件时,Firefox中的“格式不正确”错误
我相信我的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:
JSON data
正如上面引用的其他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 });
本地文件和脚本不混合。 太多浏览器安全的东西和其他涉及的怪异。 如果你想测试一下,你应该通过HTTP服务器运行你的东西。 在本地安装一个可能是个好主意。