「 json 」ではなく、「」にするdataType
必要がありますjsonp
。
アップデート
http://www.wordreference.com/docs/api.aspxによると:
さらに、JSPONp の場合、JSON API はクエリ文字列でオプションのコールバック関数を取ることができます。URL の末尾に「?callback={yourCallback}」を追加するだけです。
そのため、API は JSONP をサポートしています。
また、JSONP は「パディング付きの JSON」を意味するため、JSON レスポンスが返されます。JSONP はCORSの使用を許可するだけです。
に変更することdataType
によりjsonp
:
"jsonp": JSONP を使用して JSON ブロックに読み込みます。「?callback=?」を追加します。URL の末尾に追加して、コールバックを指定します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。
設定で指定することにより、デフォルトのコールバックをオーバーライドできますjsonpCallback
。
最後に、エラー ハンドラを追加して、次のように設定する必要がありasync
ますtrue
。
jQuery.ajax({
"async": true, //cannot be false for JSONP
"url": "http://api.wordreference.com/0.8/key/json/roen/" + word,
"dataType": 'jsonp',
"method": "GET",
"error": function (jqXHR, textStatus, errorThrown) {
//included so you can see any errors
console.log(textStatus + ': ' + errorThrown);
},
"success": function (data, textStatus, jqXHR) {
//According to API documentation
//data will not likely contain either Error, or Response
//so, exists will likely not change to 0
if (data.Error || data.Response) {
exists = 0;
}
}
});
アップデート:
エラーと「同期が必要」の両方に対する解決策は、先にPointyが指摘したことになります。スクリプトと同じドメインで実行されるサーバー側プロキシを作成する必要があります。
サーバー側のプロキシは JSONP を返すことができますが、率直に言って、 CORSは問題ではなく、プロキシは同期できるため、単純に JSON または XML を返す方が簡単です。PHP サンプル スクリプトについては、Yahoo! Developer Networkは、単純なプロキシのソース コードをホストしています。
サーバー側の Web サービス プロキシに関するその他のことについては、使用しているサーバー言語を指定する必要があります (おそらく別の質問として適しているでしょう)。