0

jqueryのajax関数を使用して、リモートサーバーからjsonを取得しようとしています。

var self = $(this);
$.ajax({
    cache: false,
    url: *external url*,
    data: {param: self.val()},
    type: 'GET',
    dataType: 'application/json',
    crossDomain: true,
    success: function(data, status) {
        console.log(status);
        console.log(data);
    }
});

これはChromeで正常に機能し、データが出力されます。Firefox では、リクエストは送信されますが、コンソールにデータは書き込まれません。IE では、呼び出しがまったく送信されないようです。

私は何を間違っていますか?クロスドメイン ブロッキングについては知っていますが、これが chrome では機能するのに、他のブラウザーでは機能しないことは、私を先延ばしにしています。

前もって感謝します!

4

1 に答える 1

0

クロスドメイン ブロッキングについては知っていますが、これが chrome では機能するのに、他のブラウザーでは機能しないことは私を先延ばしにしています。

データをリクエストしているサーバーがCORSをサポートしているように聞こえますが、ブラウザによってリクエストとともに異なるヘッダーが送信される可能性があることに注意してください。ブラウザがヘッダーを送信した場合、CORS リクエストは失敗します。 . したがって、Chrome はサーバーが承認したヘッダーのみを送信しているため、リクエストは機能しますが、Firefox はサーバーが承認していないヘッダーを送信しているため、リクエストは機能しません。

XDomainRequestIE10 を使用していない限り、オブジェクトの代わりにオブジェクトを使用しない限りクロスドメイン要求が IE でXMLHttpRequest機能せず、jQuery がそれを行わないため、IE はおそらく機能していません。それを可能にするパッチがありますが、jQuery ライブラリ自体はそうではありません。IE10は最終的に、標準XMLHttpRequestオブジェクトを介して CORS を有効にします。

于 2013-02-15T15:30:35.817 に答える