IE8中的Javascript跨域请求

IE8中的Javascript跨域请求,javascript,internet-explorer,cross-domain,xdomainrequest,Javascript,Internet Explorer,Cross Domain,Xdomainrequest,我有一个根据数据库验证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的函数。如果找到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;
        }
    }
}
问题是我希望verify函数返回false,而不是checkResponse函数

在其他浏览器中,将open设置为false会起作用,但在IE中则不然

请不要回答jQuery


谢谢你的帮助
注意。

这里是将IE8中的CORS请求合并到jQuery中的推荐方法。您可以将此作为自己的起点:

另外,
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
    }
});

使AJAX同步违背了它的目的。你还有其他建议吗?你建议如何使其同步?是的,绝对不建议使其同步。您将在等待响应时阻止UI。检查其中的信息,您的呼叫似乎不支持同步呼叫,因此您应该更改代码,并使用回调函数。感谢您的回复。我想把这件事和公司联系起来。该函数是同步的,因为它用于根据数据库中的ID与否加载不同的UI。可能是这样,但您将禁止用户在页面上进行任何交互。最好让它保持异步。