2013-11-26 26 views
23

私は現在、CORSを使用してリモートWebサービスを使用しているのに、現在IE 11でGETリクエストを作成することに問題がある純粋なHTMLおよびJavaScript主導のWebアプリケーションを開発中です。面白いことに、IE8/9/10では正常に動作しています。IE 11の奇妙なAJAXのバグ

問題は、IE 11がタイムアウトしてサーバーからの応答を待っているようです。 ajaxコールは単純に:

ネットワークタブでは、私はIEがリクエストを送信しないことがわかります。

誰にもご意見はありますか?

EDIT:私はすでにcache:falseを試しています。私はまた、私がIEをクリアして再起動した後でも、キャッシュが真であるか偽であるかに関わらず、DevツールのドキュメントモードをEdgeから9に切り替えると、毎回コールが再び機能するという点で非常に奇妙なことを発見しました。非常に奇妙な。 :\私はよく分からない

+0

IE11に飛行前のOPTIONSリクエストに問題があるかどうか確認できますか? OPTIONSリクエストをサーバーに記録できますか? – Halcyon

+0

ajaxのどのオプションを使って問題を解決するかをチェックしてデバッグしてください。 –

+0

これはまだ問題ではないのですが、IE [セキュリティゾーン](http:// stackoverflow)をチェックしてください。com/questions/3362474/jquery-ajax-cross-domain-callsで失敗します)、CORSを許可しますか? – rockerest

答えて

29

IEはキャッシュとして有名です。キャッシュされた応答が得られていないことを確認してください。 cacheプロパティ値をfalseに設定するか、キャッシュされたレスポンスにならないようにURLに一意のタイムスタンプを追加することができます。独自のタイムスタンプを取得するには、$.now()メソッドを使用します。 URL

var url="somePage.php?"+$.now(); 
//Use this url now for making the ajax call 

にユニークなタイムスタンプを追加

キャッシュプロパティを設定

$.ajax(url, { 
    dataType: 'json', 
    cache : false, 
    //Other things ... 
} 

$.now()方法は表現(new Date).getTime()

+0

返信いただきありがとうございます。タイムスタンプを追加しようとしましたが、違いはありません。 – Daveo

+0

@Daveo:スクリプトエラーが発生しましたか?ファイヤーバグを使って何が起こるかを確認する – Shyju

+0

'$ .now()'の前に疑問符があるはずです。それ以外の場合は、URLが壊れます。 – qwerty

5

、多分それは、キャッシングだ、プロパティを設定しようとする「キャッシュ:偽」

そうでない場合、あなたはまた、あなたが毎回持っているので、あなたのURLの末尾に日時を追加してみてください異なるURLとIEはキャッシュしません。

url +""+ (new Date()).getTime() 
2

によって返された数の省略形ですローカルで実行している場合は、 crossDomainをfalseに切り替えます。私はかなりの時間をかけて過ごしました。クロムはcrossDomainを処理しましたが、crossDomainを使用していない場合はIEでtrueに設定していれば、それは黙って失敗します。

3

は、あなたの頭のタグで

<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1"> 
2

でこれを使用し、私は、このスレッドが古いですけど、ちょうどこの問題が発生しているもののための余分なチェックとして、あなたの信頼済みサイトゾーンの設定は、ドメイン間のアクセスが許可されていることを確認してください。 「その他」の下の最初の設定は、必要な設定です。

「ドメイン間でデータソースにアクセスする」を「有効」に設定します。