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/