繁体   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