8

有没有办法指定 ajax 发布到服务器的最大执行时间,所以如果服务器没有响应,那么继续尝试 10 秒,然后继续执行其余代码?

Function doajaxPost(){
    var returned_value="";

    // #############I NEED THIS CODE TO TRY TO POST THE DATA TO THE SERVER AND KEEP
    // #############TRYING FOR 10 SECONDS AND THEN CONTINUE WITH THE REST OF THE CODE.
        jQuery.ajax({
            url: 'ajaxhandler.php',
            success: function (result) {                               
                returned_value=result;
            },
            async: false
        });
    // ###################################################

    alert(returned_value);

    some other code
    .
    .
    .           
 }
4

4 回答 4

21

使用timeout

jQuery.ajax({
    url: 'ajaxhandler.php',
    success: function (result) {                               
        returned_value=result;
    },
    timeout: 10000,
    async: false
});

但是,alert(returned_value);将在您调用后立即执行(不会等待调用完成)。

于 2012-04-27T16:48:54.997 回答
10

JQuery API 文档讲述了如何设置“超时”。

http://api.jquery.com/jQuery.ajax/

虽然这里的其他答案是正确的,但学习自己检查文档比只知道这个答案更有价值。

于 2012-04-27T16:48:53.630 回答
5

您可以为您的 ajax 请求设置超时值。

超时

为请求设置超时(以毫秒为单位)。这将覆盖使用 $.ajaxSetup() 设置的任何全局超时。超时时间从 $.ajax 调用开始;如果其他几个请求正在进行中并且浏览器没有可用的连接,则请求可能会在发送之前超时。在 jQuery 1.4.x 及以下版本中,如果请求超时,XMLHttpRequest 对象将处于无效状态;访问任何对象成员都可能引发异常。仅在 Firefox 3.0+ 中,脚本和 JSONP 请求不能被超时取消;即使脚本在超时期限之后到达,它也会运行。

这是一个例子:

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});
于 2012-04-27T16:48:11.377 回答
0

为请求设置超时(以毫秒为单位)。这将覆盖使用 设置的任何全局超时$.ajaxSetup()。超时时间从$.ajax拨打电话的那一刻开始;如果有几个其他请求正在进行并且浏览器没有可用的连接,则请求可能会在发送之前超时。在 jQuery 1.4.x 及以下版本中,XMLHttpRequest如果请求超时,对象将处于无效状态;访问任何对象成员都可能引发异常。仅在 Firefox 3.0+ 中,脚本和 JSONP 请求不能被超时取消;即使脚本在超时期限之后到达,它也会运行。

于 2014-12-05T05:48:53.560 回答