JSONP を使用してサードパーティ (私のサイトとは異なるドメイン) から JSON データをフェッチする Ajax 呼び出しを行っており、Chrome と Firefox で動作していますが、IE では失敗しています (9 と 10 は私が試したバージョンです)。IE デバッガーでは、呼び出しが (Http 200 で) 完了していることがわかりますが、JSONP 呼び出しに指定したコールバックが呼び出されていません。
私のコードは次のようになります。
$.ajax({
url: 'http://api.yipit.com/v1/deals/?key=mykey&division=seattle&limit=1000',
dataType: 'jsonp',
contentType: "text/javascript",
async: false,
cache: false,
crossDomain: true,
jsonp: 'callback',
jsonpCallback: 'processResult',
error: function (xhr, textStatus, error) {
window.alert(error);
},
success: function (data) {
window.alert(JSON.stringify(data));
_yipit_deals = data.response.deals;
}
});
応答本文は次のようになります。
<html><body><pre>processResult({
... [valid JSON data]
});</pre></body></html>
呼び出しが行われると、エラー関数が次のエラーで呼び出されError: processResult was not called
、IE デバッガーは<html><body><pre>
、応答内のタグを解析しようとしたときに発生したスクリプト エラーを表示します。Chrome と Firefox で実行している場合、これらの html タグは応答本文に存在せず、IE の場合に応答が異なる理由がわかりません。
これらのタグが原因で IE が barf し、コールバックを呼び出せなくなっているようです。「text/html」、「text」、「application/javascript」などの contentType に他の値を指定してみましたが、まったく指定しませんでしたが、違いはありませんでした。クロスドメインの問題を回避するために JSONP を使用しています。
何か案は?ありがとう!