在运行此代码时,Firefox 3中会出现语法错误(未定义的第1行test.js).警报工作正常(它显示“工作”),但我不知道为什么我收到语法错误.
jQuery代码:
- $.getJSON("json/test.js",function(data) {
- alert(data[0].test);
- });
test.js:
- [{"test": "work"}]
有任何想法吗?我正在为一个更大的.js文件工作,但我缩小到这个代码.什么是疯狂的,如果我用远程路径替换本地文件没有语法错误(这里是一个例子):
解决方法
我发现一个解决方案来踢这个错误
- $.ajaxSetup({'beforeSend': function(xhr){
- if (xhr.overrideMimeType)
- xhr.overrideMimeType("text/plain");
- }
- });
现在的解释:
在firefox 3(和我只有firefox三)中,每个文件都具有MIME类型的“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);
- } });