如果我在第一个请求的回调中完全相同的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