如果我在第一個請求的回調中完全相同的ajax請求,則第二個請求的回調不會觸發。
function doCall(){
console.log('1');
$.ajax(
'InfoRequest.cgi?reqType=rxChanNames&deviceName=Ultimo-0700b9'
)
.always(function(d){
console.log('success1');
$.ajax(
'InfoRequest.cgi?reqType=rxChanNames&deviceName=Ultimo-0700b9'
)
.always(function(d2){
console.log('success2');
});
});
}
第二個調用已完成,200從服務器響應,但'success2'從不打印。 對於請求的響應是JSON:
{"data":[],"status":"wserrortimeout"}
如果我改變第二請求到
'InfoRequest.cgi?reqType=rxChanNames&deviceName=Ultimo-0700b8'
然後它觸發回調。
在任何人問我爲什麼要這樣做的時候,我在這裏概述的是我實際上在做什麼的一個簡化版本,它仍然證明了這個問題。該應用程序位於嵌入式硬件上,有時會響應錯誤,在這種情況下請求需要重試。
在此先感謝您的任何建議。
爲什麼不檢查錯誤,然後再次提出請求 –
這就是我在實際應用中所做的。同樣的事情發生。如果中間有一個不同的請求,那麼一切都很好,但如果同一個請求是在一行中完成的,那麼第二個請求就沒有回調。 – njc
您可以在瀏覽器開發工具中查看網絡選項卡。第二個請求是否真的完成了,並且有迴應嗎? – mm759