我正在使用 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");
}
},
dataType: 'json',
data: data,
success: callback
});
关于jquery - 通过 jQuery.ajax 在 Firefox 中加载客户端 JSON 时出现 "not well-formed"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2618959/