我有一个针对数据库验证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回答。
感谢您的帮助!
答案 0 :(得分: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
}
});
答案 1 :(得分:-2)
您需要考虑的第一点是将js代码更改为非异步。否则checkResponse是你必须得到答案的唯一一点。你的代码似乎是异步的,它应该是同步的。
问候。