XMLHttpRequest 状态 2 等待来自服务器的响应

XMLHttpRequest state 2 waits for response from server

本文关键字:服务器 响应 状态 等待 XMLHttpRequest      更新时间:2023-09-26

当我的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中),您可以看到任务在没有用户呈现的情况下正在运行。

注意:在我将用户重定向到另一个页面的那一刻,所有会话都消失了。