如何在$ .ajax请求上设置超时并在花费太长时间的情况下重做?

有人可以向我展示一个有关为我的$ .ajax请求" title="ajax请求">ajax请求设置超时并重做整个请求(如果第一个请求超时)的实际示例,我已经阅读了文档但没有得到。我将不胜感激。

这是我的$ .ajax请求。

    $.ajax({

url: '<?php bloginfo('template_directory'); ?>/ajax/product.php',

type: 'get',

data: {product_id : product_id},

beforeSend: function(){

$('#details').html('<div class="loading"></div>');

},

success: function(data){

$('.iosSlider').fadeOut('fast');

thisprod.addClass('current');

$('#details').css({opacity: 0}).html(data).stop().animate({left: 0, opacity: 1}, 800);

}

});

return false;

回答:

在AJAX功能需要一个超时参数,你可以在错误的情况下,检查状态。

var call =function(){

$.ajax({

url: '<?php bloginfo('template_directory'); ?>/ajax/product.php',

type: 'get',

timeout: 400,

...

error: function(x, textStatus, m) {

if (textStatus=="timeout") {

call();

}

}

});

};

您可能需要做一些更聪明的操作,以避免永久性通话…

从文档中:

设置请求的超时(以毫秒为单位)。这将覆盖通过$ .ajaxSetup()设置的所有全局超时。超时时间始于进行$

.ajax调用的时间点;如果其他几个请求正在进行中,并且浏览器没有可用的连接,则请求可能会超时,然后才能发送。在jQuery

1.4.x及更低版本中,如果请求超时,则XMLHttpRequest对象将处于无效状态。访问任何对象成员都可能引发异常。仅在Firefox

3.0以上版本中,脚本和JSONP请求无法通过超时取消;即使脚本在超时期限之后到达,脚本也将运行。

以上是 如何在$ .ajax请求上设置超时并在花费太长时间的情况下重做? 的全部内容, 来源链接: utcz.com/qa/407721.html

回到顶部