Mik*_*ike 10 html javascript firefox jquery json
我在运行此代码时在Firefox 3中遇到语法错误(未定义的第1行test.js).警报正常工作(它显示'工作'),但我不知道为什么我收到语法错误.
jQuery代码:
$.getJSON("json/test.js", function(data) {
alert(data[0].test);
});
Run Code Online (Sandbox Code Playgroud)
test.js:
[{"test": "work"}]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我正在为更大的.js文件工作,但我已经缩小到这个代码.令人抓狂的是,如果我用远程路径替换本地文件,则没有语法错误(这是一个例子):
小智 23
我找到了解决这个错误的解决方案
$.ajaxSetup({'beforeSend': function(xhr){
if (xhr.overrideMimeType)
xhr.overrideMimeType("text/plain");
}
});
Run Code Online (Sandbox Code Playgroud)
现在解释:在firefox 3(我只有firefox THREE)中,每个具有mime-type"text/xml"的文件都会被解析并进行语法检查.如果你用"["启动你的JSON,它会引发一个语法错误,如果它以"{"开头是"格式错误"(我的翻译为"nicht wohlgeformt").如果我从本地脚本访问我的json文件 - 这个进程中没有服务器 - 我必须覆盖mime类型...也许你为那个文件设置你的MIME类型错误...
但是,添加这一小段代码将使您免于错误消息
编辑:在jquery 1.5.1或更高版本中,您可以使用mimeType选项来实现相同的效果.要将其设置为所有请求的默认值,请使用
$.ajaxSetup({ mimeType: "text/plain" });
Run Code Online (Sandbox Code Playgroud)
您也可以直接使用$ .ajax,即您的调用转换为
$.ajax({
url: "json/test.js",
dataType: "json",
mimeType: "textPlain",
success: function(data){
alert(data[0].test);
} });
Run Code Online (Sandbox Code Playgroud)