我正在使用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。我应该忽略这个错误吗?
答案 0 :(得分:2)
你不应该有一个全局函数foo
作为回调,但是let jQuery create that global function会自动将结果传递给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);
});
答案 1 :(得分:1)
您已经从AJAX调用中专门删除了JSONP回调,尝试从传递给jsonp : false
的选项对象中省略$.ajax
,然后删除您创建的回调函数({{1}让jQuery为你工作。
可在此处找到文档:http://api.jquery.com/jquery.ajax/