0

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

我得到的只是一个“解析器错误”。如果我将 url 的结尾更改为 callback=mycallback,我只会得到“错误”,没有类型。

4

2 回答 2

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 解析未定义的对象,这会给您解析错误。

于 2013-08-09T02:18:22.790 回答
0

您的回报如下所示:

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

而有效的 json 将是:

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

有效的 json 只能以数组符号 [ 或对象符号 { 您可以在http://jsonlint.com上验证任何 json 字符串

于 2013-08-09T00:23:00.033 回答