Ajax超时重试而不等待再次超时



我试图重新发送ajax每5秒,如果出了问题,但出于某种原因,当我模拟与chrome ajax请求的离线连接被称为不间断而不等待5秒后,每个请求。

我做错了什么?顺便说一句,我没有得到任何控制台。登录到我的浏览器控制台

$('#filters-ajax').one('click', function(){
var product_id = "<?php echo isset($set_id) ? $set_id : NULL; ?>";
$.ajax({
url: "index.php?route=catalog/product/getFiltersGroup&token=<?php echo $token ?>",
type: "POST",
data: '&product_id='+product_id,
dataType: 'JSON',
timeout: 5000,
beforeSend: function(){
$('#btn-product-filter-groups').attr('disabled', true);
},
success: function(data){
$('#btn-product-filter-groups').attr('disabled', false);
},
error: function(xmlhttprequest, textstatus, message) {
console.log(xmlhttprequest);
console.log(textstatus);
console.log(message);

$.ajax(this);
}
});
})

$.ajax()options对象的timeout属性没有定义延迟执行。相反,它用于在指定时间内未完成请求时取消请求。

如果您想要重复AJAX调用并在它们之间发生定义的时间,则必须使用setTimeout()setInterval()设置它。

下面是setInterval()的代码片段:

const url="https://jsonplaceholder.typicode.com/posts/";
const iv=setInterval(()=>
$.ajax({
url: url+Math.ceil(Math.random()*50),
/* type: "POST",
data: '&product_id='+product_id, */
dataType: 'JSON',
/* beforeSend: function(){
$('#btn-product-filter-groups').attr('disabled', true);
}, */
success: function(data){
console.log(data.title)
},
error: function(xmlhttprequest, textstatus, message) {
console.log(xmlhttprequest);
console.log(textstatus);
console.log(message);          
// $.ajax(this);
}
}), 1000);
document.querySelector("button").onclick=()=>clearInterval(iv)
<script src="https://code.jquery.com/jquery-3.6.2.min.js"></script>
<button>stop AJAX</button>

相关内容

  • 没有找到相关文章

最新更新