如何使用jQuery设置ajax post的最大执行时间?

时间:2012-04-27 16:45:35

标签: javascript ajax jquery

有没有办法指定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 个答案:

答案 0 :(得分:17)

使用timeout

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

但是,alert(returned_value);将在您的通话后执行(不会等待通话结束)。

答案 1 :(得分:9)

JQuery API文档说明了如何设置“超时”。

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

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

答案 2 :(得分:5)

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

timeout

  

设置请求的超时(以毫秒为单位)。这将覆盖   使用$ .ajaxSetup()设置的任何全局超时。超时时间开始   在$ .ajax调用的点上;如果有其他几个请求   进度和浏览器没有可用的连接,这是可能的   请求在发送之前超时。在jQuery 1.4.x和   如下所示,XMLHttpRequest对象将处于无效状态   请求超时;访问任何对象成员可能会抛出一个   例外。仅在Firefox 3.0+中,脚本和JSONP请求不能   超时取消;即使脚本到达,脚本也会运行   超时期限。

以下是一个例子:

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});

答案 3 :(得分:0)

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