Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest状态2等待来自服务器的响应_Javascript_Xmlhttprequest - Fatal编程技术网

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

Javascript XMLHttpRequest状态2等待来自服务器的响应,javascript,xmlhttprequest,Javascript,Xmlhttprequest,当XMLHttpRequest达到状态2时,我正试图执行一段代码。我希望它处于状态2的原因是我不希望用户等待服务器的响应(此时我希望重定向用户) 但是,只有在服务器处理完调用后,才会调用if(xmlhttp.readyState==2)中的代码块。此部分必须在调用完成后立即执行(无需服务器等待) 在文档中,我发现呼叫一发送就达到状态2。但事实并非如此 更新: 我试图进行的调用涉及在服务器上调用Api(这需要时间来完成)。对于客户端来说,调用发生了什么并不重要。我唯一想要的是执行调用。所以基本上

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

但是,只有在服务器处理完调用后,才会调用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;
        }
    }
[HttpPost]
公共void方法(字符串参数,字符串参数)
{           
Task.Factory.StartNew(()=>RunTask(accessToken,parameter,parameter));
}
私有字符串运行任务(字符串参数,字符串参数)
{
尝试
{
//要在此处执行的代码
返回“完成!”;
}
捕获(例外e)
{
返回“错误:”+e.消息;
}
}
在服务器上,我开始了一项任务。在这个任务中,我执行长过程。在服务器将调用返回给用户之前,仍然需要很短的时间

调试时(在VisualStudio中),您可以看到任务在没有用户在场的情况下运行


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

您到底想做什么?请记住,当您卸载页面时,任何打开的连接都将被中止,这意味着您未完成的AJAX调用也将被中止,这似乎很奇怪,为什么您要进行AJAX调用,然后故意不等待它完成?@FritsvanCampen我试图进行的调用涉及在服务器上调用Api(这需要时间才能完成)。对于客户端来说,调用发生了什么并不重要。我唯一想要的是执行调用。因此,基本上我在这里尝试提高速度。为什么不更改服务器端程序,使其设置长时间运行的进程,然后立即返回
204无内容
响应?@Quentin我尝试过这样的事情,但我可以这不管用。你能给我一个代码示例(用c#)吗?我真的很感激!我花了大约三个小时玩c#(主要是被不同版本的.NET搞糊涂了)…所以没有:)
[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;
        }
    }