2

我有一个对服务器的 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 代码运行到最后都没有错误。

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

谢谢!

4

1 回答 1

1

我敢打赌你的网络服务器超时,这会使连接失效,这可能意味着没有回复。在这种情况下,ajax 超时选项可能对您有好处。

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

于 2013-02-10T19:01:17.897 回答