我试图重新发送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>