JSON
とJSONP
はまったく別のものです。あなたはJSONを求めていますが、JSONPを求めていることをjQueryに伝えています。だからうまくいかない。
あなたがそうするように指示すれば、JSONPをサポートします。と を使用する必要がformat=jsonP
ありprefix=the_name_of_your_callback
ます。jQuery でコールバック名を制御したいので、API が(標準の ではなく)jsonp
非標準の引数を使用していることを引数で伝える必要があります。prefix
callback
$.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 を受信することを期待しています。