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

the*_*mhz 8 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
    .
    .
    .           
 }
Run Code Online (Sandbox Code Playgroud)

ily*_*oli 19

用途timeout:

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

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

  • 请注意,这不会重试.它只会尝试一次. (2认同)

Joh*_*her 11

JQuery API文档说明了如何设置"超时".

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

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


Blu*_*ict 5

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

超时

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

这是一个例子:

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});
Run Code Online (Sandbox Code Playgroud)