我有一个到服务器的ajax请求,我只需要知道它何时完成,就可以将用户重定向到第二个页面它大多数时候都在工作,但如果服务器需要很长时间才能应答(例如10分钟),则可能会出现没有调用回调函数而请求一直在等待的情况。
我的代码如下:
$.ajax({
type: 'post',
url: 'request.php',
success: function(data) {
alert("Success: "+data);
window.location.replace("success.php");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Ajax error: "+xhr.status+" - "+thrownError);
window.location.replace("error.php");
}
});
正如您所看到的,我已经尝试检查是否有任何错误,但就我到达时而言,ajax请求的行为就像它还没有完成一样(没有触发警报或重定向)。但是,服务器中的PHP代码一直运行到最后都没有错误。
我不知道在哪里搜索错误,因为我在考虑浏览器或服务器中的超时问题,但这似乎不是原因。由于相同的代码在短的等待时间内工作,我无法想象其他可能的原因。
谢谢!
我敢打赌,您的web服务器会超时,导致连接无效,这可能意味着不会发回任何答复。在这种情况下,ajax超时选项可能对您有好处。
话虽如此,如果我是你,我会采取不同的做法:既然你已经在使用ajax,为什么不每隔x秒对服务器进行一次ping,检查进程是否已经完成,是时候重定向了,而不是保持连接打开?这样就不会出现超时问题,也不会在不发送任何数据、只等待服务器端进程完成的会话上保持连接。更具可扩展性和健壮性,更适合http连接。