一尘不染

jQuery .getJSON Firefox 3语法错误未定义

json

运行此代码时,我在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=?


阅读 213

收藏
2020-07-27

共1个答案

一尘不染

我找到了解决该错误的方法

$.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);
    } });
2020-07-27