jQuery ajax调用永远不会完成(不会触发成功和错误回调)

时间:2013-02-10 16:04:09

标签: php javascript jquery ajax timeout

我向服务器发出了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代码在结束前运行时没有错误。

我不知道在哪里搜索错误,因为我在思考浏览器或服务器中的超时问题,但似乎不是原因。由于相同的代码在短暂的等待时间内工作,我无法想象其他可能的原因。

谢谢!

1 个答案:

答案 0 :(得分:1)

我打赌你的网络服务器超时会导致连接失效,这可能意味着没有回复任何答案。 在这种情况下,ajax超时选项可能对您有用。

话虽如此,如果我是你,我会这样做:因为你已经在使用ajax,为什么不每隔x秒ping一次服务器并检查进程是否已经完成并且是时候重定向了,而不是保持连接打开?这样您就不会出现超时问题,并且您不会在不发送任何数据且仅等待服务器端进程完成的会话中保留连接。更具可扩展性和健壮性,更适合于http连接。