重复$ .ajax请求不会触发回调

时间:2016-09-20 15:48:04

标签: javascript jquery ajax

如果我在第一个请求的回调中发出完全相同的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响应来自服务器,但是成功2'永远不会打印。 请求的响应是JSON:

{"data":[],"status":"wserrortimeout"}

如果我将第二个请求更改为

'InfoRequest.cgi?reqType=rxChanNames&deviceName=Ultimo-0700b8'

然后它会触发回调。

在有人问我为什么要这样做之前,我在这里概述的是我实际上做的一个非常简化的版本仍然可以证明这个问题。该应用程序位于嵌入式硬件上,有时会响应错误,在这种情况下需要重试请求。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

更改参数使调用工作的事实让我相信它是一个缓存问题。

在ajax参数中使用cache:false来防止缓存。

答案 1 :(得分:-1)

你的javascript中没有问题..你可能需要查看CGI代码,如果你将请求转发给其他地方或者你没有发送回应的方式。