运行此代码时,我在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 3),每个具有mime类型的“ text / xml”文件都将被解析并进行语法检查。如果以“ [”开头的JSON将引发语法错误,如果以“ {”开头的则为“格式错误”(我的翻译是“ nicht wohlgeformt”)。如果我从本地脚本访问json文件-此进程中不包括服务器-我必须重写mime-type …也许您为该文件设置了MIME- Type错误…
但是,添加此小段代码将使您免于出错消息
编辑: 在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); } });