簡體   English   中英

Javascript跨域請求在IE8中

[英]Javascript Cross domain requests in IE8

我有一個功能,可以根據數據庫驗證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;
        }
    }
}

問題是我希望驗證函數返回false,而不是checkResponse函數。

在其他瀏覽器中將open設置為false可以解決問題,但不能在IE中使用。

請不要jQuery回答。

謝謝你的幫助!

以下是將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
    }
});

您需要考慮的第一點是將js代碼更改為非異步。 否則checkResponse是你必須得到答案的唯一一點。 您的代碼似乎是異步的,它應該是同步的。

問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM