当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《jQuery.getJSONFirefox3语法错误未定义》经验,为你挑选了1个好方法。

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



1> 小智..:

我找到了解决这个错误的解决方案

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

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有