0

私は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 を期待しているためです。このエラーを無視する必要がありますか?

4

2 に答える 2

2

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);
});
于 2013-09-16T16:48:07.917 に答える
1

jsonp : falseAJAX 呼び出しから JSONP コールバックを具体的に削除しました。渡すオプション オブジェクトから省略してから、$.ajax作成したコールバック関数を削除して ( foo)、jQuery に作業を任せてください。

ドキュメントはここにあります: http://api.jquery.com/jquery.ajax/

于 2013-09-16T16:47:54.430 に答える