0

私はデータベースとIDを照合する機能を持っています。 IDが見つかった場合はtrueを返し、そうでない場合はfalseを返します。Javascript IE8でのクロスドメインリクエスト

他のブラウザで動作するようにリクエストされました。今、Internet ExplorerのXDomainRequestを使ってそれを理解しています。

問題は、checkResponse関数ではなく、falseを返すようにしたいという問題です。

オープンを偽に設定する他のブラウザでは、トリックは実行されますが、IEでは実行されません。

jQueryの回答がありません。

ありがとうございました!

+0

作るAJAXの同期が敗北が目的だそれにコールバック関数を渡すと非同期それを維持勧め。 – Joseph

+0

別の提案がありますか? – Enkay

答えて

4

ここでは、IE8でのCORS要求をjQueryに組み込むために推奨される方法を示します。あなたはおそらく、あなた自身のための出発点としてこれを使用することができます:

https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js

また、verifyは同期動作すべきではありません。あなたがそのようにのように呼び出すことができます

function verify(id, callback){ 
    var xmlhttp = new window.XDomainRequest(); 
    xmlhttp.onload = function() { 
     callback(xmlhttp.responseText === 200); 
    }; 
    xmlhttp.open("GET", "http://abc.com/verify?id=" + encodeURIComponent(id)); 
    xmlhttp.send(); 
} 

verify(123456, function (isValid) { 
    if (isValid) { 
     // do something if valid 
    } else { 
     // or not 
    } 
}); 
+0

ご返信ありがとうございます。私はこれを埋めることを試みている。この関数は、データベース内のIDに基づいて異なるUIをロードするために使用されるため、同期しています。 – Enkay

+0

そのような場合もありますが、ユーザーがページ上で対話を全く行わないようにすることはできません。それを非同期のままにする方が良い。 – Eli

+0

それは答えのタイプミスで、うまくいきました。ありがとう – Enkay

-2

最初に考慮する必要があるのは、非同期で動作するようにjsコードを変更することです。それ以外の場合は、checkResponseだけが回答を得なければなりません。あなたのコードは非同期であると思われ、同期している必要があります。

よろしくお願いいたします。

+0

あなたはどのようにそれを同期させることを提案しますか? – Enkay

+0

ええ、確かにそれを同期させることはお勧めしません。あなたは応答を待っている間、UIをブロックします。 – Eli

+0

http://msdn.microsoft.com/en-us/library/cc288168%28v=vs.85%29.aspxの情報を確認すると、呼び出しが同期呼び出しをサポートできないように見えるので、コードを変更する必要がありますコールバック関数を使用する必要があります。 – user1368365

関連する問題