2012-08-21 20 views
5

リクエストdataTypeが "jsonp"または "script"に設定されていない限り、クロスドメインAJAXリクエスト(jQuery 1.7.2を使用)はIE9では実行されません。IE9でのクロスドメインAJAXリクエスト

この問題は、レスポンスを気にせず、データタイプを不特定のままにしている(はい、回答に気を付ける必要があることがわかっています)。

ので、例えば、これは動作します:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET", // or "POST" 
    dataType: 'jsonp' 
}); 

をしかし、これはしません: "仕事" と

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET" // or "POST" 
}); 

私はFirebugのか、F12で行われたHTTPリクエストを見ていることを意味します。

両方のリクエストは他のブラウザでも動作します。 jQuery.support.cors = true;を設定しても、成功には影響しません。また、crossDomainをtrueに設定したり、AJAXリクエスト内でfalseにキャッシュしたりしません。

AJAXリクエストの成功は、IEで要求されたdataTypeに依存するのはなぜですか?返されたデータを処理する能力に影響する理由を理解できます。私はまた、一部のサーバーが特定のdataTypeに対するすべての要求を拒否するかもしれないことを理解しています(ただし、ここでは明らかにそうではありません)。

+3

あなたはJSONPが何であるかを理解する必要があります。 – SLaks

+0

解決方法を見つけましたか?私はIE9 + jQuery 1.7.2でWebAPIにクロスドメインajax POSTSを行っているのと同じ問題があります。私はFF/Chrome/Safariが正しく動作することを可能にするサーバー側にCORSサポートを組み込んでいます。 IE9はCORSのサポートを決定するために飛行前のOPTIONSリクエストを発行することを単に拒否します... – mellodev

答えて

1

これはデータ型の問題ではなく、サーバーが実際にこのクエリに答えることをブラウザで明確に検証していることです。

JSONPを指定すると、サーバーに非常に具体的な回答(メソッド呼び出しを含む)が強制されます。他のソリューションは、今があること

注:サーバー上で、設定することができ、特定のヘッダー(https://developer.mozilla.org/en-US/docs/HTTP_access_controlを参照)

0

あなたは、クロスドメインAJAXを実行する場合、データ型を設定し、ページをリロードせずにフォームのポストを処理するために呼び出します"スクリプト"は私のために働いた。

私は情報の信頼できるリンクに興味があり、なぜこれがなぜであるかについて詳しく知りたいです。 IE9以外のすべてのブラウザが動作していた理由を理解していないカップルの日に私の髪を引っ張った。 FFが動作することができますが、私は、スクリプトデータ型

-2

を使用するまで、あなたはそのために長いスクリプトを記述する必要はありませんIE9でdiffrenceをしなかったとしても、ヘッダーに入れた後

@dystroy、。単にこのコードを以下に追加して、魔法を見てみましょう。

$(document).ready(function(){ 
jQuery.support.cors = true; 
// call your other functions below..... 
}) 
+0

これは私が実際に追求することに本当に興味がないという古い質問ですが、私の最初の投稿では、 'jQuery.support.cors'プロパティを' true'に設定します。 –

関連する問題