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

时间:2013-11-06 10:32:58

标签: javascript xmlhttprequest

当我的XMLHttpRequest达到状态2时,我正在尝试执行一段代码。我希望它处于状态2的原因是我不希望用户等待服务器的响应(I我想在此时重定向用户。)

    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(这需要时间来完成)。对于客户端来说,调用会发生什么并不重要。我唯一想要的就是执行调用。所以基本上我想在这里获得速度。

我知道只要我重定向用户,代码就会停止运行。但是,应该对服务器进行调用(并发送出去)。

我错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:0)

谢谢大家的帮助。

我找到了解决方案:

[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;
        }
    }

在服务器上我启动了一个任务。在这个任务中,我执行long procces。在服务器将呼叫返回给用户之前,还需要一段时间。

当debuggin(在visual studio中)你可以看到任务在没有用户礼物的情况下运行。

注意:我将用户重定向到其他页面时,所有会话都已消失。