jQuery JSONP - 外部回调错误()

时间:2013-09-16 16:44:09

标签: jquery ajax json 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。我应该忽略这个错误吗?

2 个答案:

答案 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/