[英]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.