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