当我的 XMLHttpRequest 达到状态 2 时,我正在尝试执行一段代码。我希望它处于状态 2 的原因是我不希望用户等待服务器的响应(我想此时重定向用户)。
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 2) {
window.location.href = urlFromPreviousAjaxcall;
}
}
xmlhttp.open("POST", "url", true);
xmlhttp.send();
然而,if(xmlhttp.readyState == 2) 中的代码块只会在服务器处理完调用后立即被调用。这部分必须在调用后立即执行(无需服务器等待)。
在文档中,我发现一旦发送呼叫,就会达到状态 2。然而事实并非如此。
更新:
我试图拨打的电话涉及在服务器上调用 Api(这需要时间才能完成)。对于客户来说,调用发生了什么并不重要。我唯一想要的是调用被执行。所以基本上我想在这里加快速度。
我知道一旦我重定向用户,代码就会停止运行。但是,应该已经对服务器进行了调用(并发送出去)。
我错过了什么或做错了什么?