[英]Ajax timeout retry without waiting to timeout again
如果出現問題,我會嘗試每 5 秒重新發送一次 ajax,但由於某種原因,當我模擬與 Chrom ajax 的離線連接時,ajax 請求被稱為不間斷,每次請求后等待 5 秒。
我做錯了什么? 順便說一句,我在我的瀏覽器控制台中沒有收到任何 console.logs
$('#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()
選項對象的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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.