Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Http jqueryajax:重定向到其他页面而不等待结果_Http_Jquery - Fatal编程技术网

Http jqueryajax:重定向到其他页面而不等待结果

Http jqueryajax:重定向到其他页面而不等待结果,http,jquery,Http,Jquery,单击一个按钮后,我想触发一个Ajax调用,然后重定向到其他页面,而不必等待Ajax结果。可能吗?我的代码如下: $('button').click(function(){ $.get('mailer.php', function(){ window.location.replace("result.php"); }); }); 上面的代码将在重定向之前等待ajax结果。我可以让ajax在后面运行并转到其他页面吗?如果您转到其他页面,与服务器的连接可能会断开(没有

单击一个按钮后,我想触发一个Ajax调用,然后重定向到其他页面,而不必等待Ajax结果。可能吗?我的代码如下:

$('button').click(function(){
    $.get('mailer.php', function(){
        window.location.replace("result.php");
    });
});

上面的代码将在重定向之前等待ajax结果。我可以让ajax在后面运行并转到其他页面吗?

如果您转到其他页面,与服务器的连接可能会断开(没有规则阻止浏览器这样做),并且操作可能无法完成。简而言之:您必须等待。

如果您立即离开,请求将被放弃。您需要在服务器上包含逻辑,以保持jqueryajax请求启动的任何进程继续运行


例如,在PHP中存在一个函数,当该函数设置为
true
时,即使用户已中止请求,它仍将继续一个过程。

它看起来像是您要访问的脚本正在发送电子邮件。我可以看到等待它完成会导致用户端的延迟。我通常是这样解决这个问题的:

不要让mailer.php脚本立即发送电子邮件,而是将消息数据存储在数据库中。不要在AJAX调用期间发送电子邮件。这将为用户带来一个非常快速的过程

然后,您可以设置一个CRON作业,该作业指向您专门创建的用于发送存储在数据库中的电子邮件的脚本


有意义吗?

+1欢迎来到StackOverflow,@Kelvin!如果浏览器甚至没有发出请求,因为位置已更改,该怎么办?无法保证它会启动请求。如果因为延迟而只发送了其中的一半(例如前两个报头),该怎么办?根据OP,请求是在更改位置之前发出的。我同意。如果AJAX请求中出现错误,需要再次发送表单/数据,会发生什么情况?您最好等待结果,然后根据AJAX请求的响应重定向到另一个页面。谢谢!玉米工作似乎是处理我处境的更好方法:)