XMLHttpRequest 状态 2 等待来自服务器的响应
XMLHttpRequest state 2 waits for response from server
当我的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(这需要时间才能完成)。对于客户来说,调用会发生什么并不重要。我唯一想要的是执行调用。所以基本上我试图在这里提高速度。
我知道一旦我重定向用户,代码就会停止运行。但是,应该已经对服务器进行了调用(并发送出去)。
我错过了什么或做错了什么?
谢谢大家的帮助。
我找到了解决方案:
[HttpPost]
public void methode(String parameter,String parameter)
{
Task.Factory.StartNew<string>(() => RunTask(accessToken, parameter, parameter));
}
private string RunTask(String parameter, String parameter)
{
try
{
// Code to execute here
return "Done!";
}
catch (Exception e)
{
return "Error: " + e.Message;
}
}
在服务器上,我启动了一个任务。在此任务中,我执行长过程。在服务器向用户返回调用之前,仍需要一小段时间。
调试时(在Visual Studio中),您可以看到任务在没有用户呈现的情况下正在运行。
注意:在我将用户重定向到另一个页面的那一刻,所有会话都消失了。
相关文章:
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- 如何在 http 上调用 end().服务器响应对象
- 将服务器响应格式化为人类可读
- 尝试获取服务器响应
- 如何在 Javascript 函数中拦截 Web 服务器响应
- 如何从服务器响应中显示phonegap中的图像
- Nodejs-websocket:如何在没有服务器响应的情况下连续发送客户端消息
- 正在分析Meteor中的错误服务器响应
- 正在从LWIP服务器响应中检索16位整数
- 可以´t从对象XMLHttpRequest获取服务器响应
- 试图理解返回javascript方法的服务器响应
- AJAX 中的常见服务器响应页原因
- 节点服务器响应错误: process.nextTick(function(){throw err;});.
- GO 中的长时间轮询,服务器响应不当
- 在 Iframe 中发布服务器响应
- Jquery 响应从服务器响应中修剪值
- 在铁表单提交后检查服务器响应
- 量角器单击链接并将服务器响应与文件进行比较
- 如何确定 Node .js服务器响应是否已停止
- 当服务器响应缓慢时,jQuery 在加载/就绪时不触发