0

WorldBank APIを使用してデータを取得しようとしています。私が行っている Web サービス呼び出しはthisです。このコードは機能しません。

$.ajax({
  type: 'GET',
  url: 'http://api.worldbank.org/countries/indicators/3.1_LOW.SEC.NEW.TEACHERS?per_page=50&date=1960:2013&format=json',
  jsonpCallback: 'jsonCallback',
  contentType: "application/json",
  dataType: 'jsonp',
  success: function(data) {
     console.log(data);
  },
  error: function(e) {
     console.log(e.message);
  }
});

どんな助けでも大歓迎です!

4

2 に答える 2

3

JSONJSONPはまったく別のものです。あなたはJSONを求めていますが、JSONPを求めていることをjQueryに伝えています。だからうまくいかない。

あなたがそうするように指示すれば、JSONPをサポートします。と を使用する必要がformat=jsonPありprefix=the_name_of_your_callbackます。jQuery でコールバック名を制御したいので、API が(標準の ではなく)jsonp非標準の引数を使用していることを引数で伝える必要があります。prefixcallback

$.ajax({
  url: 'http://api.worldbank.org/countries/indicators/3.1_LOW.SEC.NEW.TEACHERS?per_page=50&date=1960:2013&format=jsonP',
  jsonp: 'prefix',
  dataType: 'jsonp',
  success: function(data) {
     console.log(data);
  },
  error: function(e) {
     console.log(e.message);
  }
});

実施例| ソース

上記に関する注意事項:

  • 削除されtype: "GET"ました。JSONP は常に GET.
  • URL の に変更format=jsonされました。format=jsonP
  • 削除されjsonpCallback: 'jsonpCallback'ました。この引数は、コールバック関数に特定の名前を使用するよう jQuery に指示しますが、これは望ましくありません。
  • jsonp: 'prefix'コールバック関数の名前のクエリ文字列で使用する引数を jQuery に指示する が追加されました。その API ドキュメントprefixは、より標準的な の代わりに使用しますcallback
  • 削除されcontentType: "application/json"ました。JSON を送信しているのではなく、JSON を受信することを期待しています。
于 2013-05-21T08:52:34.923 に答える
0

Web サービスは JSONP をサポートできませんか?

はい。Web サービスは、好きなデータ形式をサポートする (またはサポートしない) ことができます。

リクエストしている URL は、JSONP ではなく JSON を返しています。

于 2013-05-21T08:52:55.637 に答える