0

データベースに対して ID を検証する機能があります。ID が見つかった場合、関数は true を返し、そうでない場合は false を返します。

他のブラウザで動作するようにというリクエストを受け取りました。現在、Internet Explorer の XDomainRequest を使用して解決に取り組んでいます。

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

    function checkResponse(){
        if(xmlhttp.responseText == 200) {   
            return true;
        } else {
            return false;
        }
    }
}

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

他のブラウザーでは open を false に設定するとうまくいきますが、IE ではそうではありません。

jQuery の回答はありません。

ご協力いただきありがとうございます!

4

2 に答える 2

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
    }
});
于 2012-05-02T19:26:41.560 に答える
-2

最初に考慮する必要があるのは、js コードを非非同期として機能するように変更することです。それ以外の場合は、checkResponse が回答を得なければならない唯一のポイントです。あなたのコードは非同期のようで、同期する必要があります。

よろしく。

于 2012-05-02T19:23:07.283 に答える