jQuery $ .getJSON()失败

时间:2013-08-09 00:16:49

标签: jquery jsonp getjson

我使用$ .getJSON()不断收到错误。我正在使用JSONP。这是代码:

$.getJSON('http://s3.amazonaws.com/eloqu/TestFile.js?callback=?', function(data){
    console.log(data);
})
.fail(function( jqxhr, textStatus, error ) {
    console.log( "Request Failed: " + textStatus + ', ' + error);
});

我得到的只是一个'parsererror'。如果我将url的结尾更改为callback = mycallback,我只是得到'错误',没有类型。

2 个答案:

答案 0 :(得分:1)

这有点奇怪......

这是一个工作小提琴..我必须定义mycallback函数:

http://jsfiddle.net/xtKAb/

$(document).ready(function () {
    $.getJSON('http://s3.amazonaws.com/eloqu/TestFile.js?callback=?');
});

function mycallback(data) {
    console.log(data);
}

我认为问题是远程文件是静态的。通常,您发送所需的回调,远程服务将数据包装在您指定的回调中。这是jQuery实际请求的一个例子:

http://s3.amazonaws.com/eloqu/TestFile.js?callback=jQuery20209767435337416828_1376014401926&_=1376014401927

因此jQuery期望回调为jQuery20209767435337416828_1376014401926(),但这不会发生(因为远程文件是静态的)。由于数据没有达到jQuery期望的回调,因此很可能尝试json解析一个未定义的对象,这会给你解析错误。

答案 1 :(得分:0)

您的回报如下:

mycallback({ "test": "variable", "test2": "variable2" })

虽然有效的json是:

{ "test": "variable", "test2": "variable2" }

有效的json只能以数组符号[或对象符号{开头} 您可以在http://jsonlint.com

上验证任何json字符串