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