jQuery JSONP – 外部回调的错误()

我在jQuery 1.8.2上,我正在做一个像这样的JSONP调用:

function foo(data) { console.log(data) } $.ajax({ type: 'GET', url: http://xxx.cloudfront.net/posts.json?category=News&callback=foo, dataType: 'jsonp', cache: true, jsonp: false }).done(function (data) { }).fail(function (XHR, status, error) { console.log(error); }); 

当我运行它时,正确的数据响应将返回到foo回调。 但错误也会触发,控制台会将错误记录为Error {} 。 从阅读Stackoverflow上的其他地方看来,这是因为响应包含在回调中,而jQuery期待普通的JSON。 我应该忽略这个错误吗?

你不应该有一个作为回调的全局函数foo ,但让jQuery自动创建该全局函数并将结果传递给done回调。 它确实会调用自己的函数,否则会触发错误。

 $.ajax({ type: 'GET', url: "http://xxx.cloudfront.net/posts.json?category=News&callback=?", dataType: 'jsonp', jsonpCallback: 'foo', // for caching cache: true }).done(function (data) { console.log(data); }).fail(function (XHR, status, error) { console.log(error); }); 

您已经从AJAX调用中专门删除了JSONP回调,尝试从传递给$.ajax的options对象中省略jsonp : false ,然后删除您创建的回调函数( foo )并让jQuery为您完成工作。

文档可在此处找到: http : //api.jquery.com/jquery.ajax/