jQuery在超时发生之前返回'false'。我必须调用API,这需要很长时间才能得到结果。所以我把超时改为5分钟。当API花费很短的时间(大约不到1分钟)时,它就可以工作了。但是,如果服务器API需要很长时间(大约2到3分钟),页面不会显示任何内容。而且,超时错误触发器根本不起作用。它默默地没有给我任何东西。在调试代码之后,我发现ajax只是在超时限制的2到3分钟后返回'false'(值为false)。
这不是服务器问题。我检查了服务器日志。其他客户端(我已使用chrome plugin postman)在此API上返回正确的值,即使API需要2到3分钟。
我无法弄清楚为什么会发生这种情况。我认为浏览器存在超时限制。但 'postman'也只是在chrome下运行的网页。在jQuery ajax中除了'timeout'属性之外还有隐藏的设置吗?我现在找不到那种东西了。 提前感谢您的帮助。
以下是我使用的代码。
$(function() {
$('#layerBtn').click(function(){
$("#contents_body").html("");
$.ajax({
data: '',
url: '/some/where',
type: 'POST',
dataType: 'json',
timeout : 300000,
success: function(result){
$("#contents_body").append(beautify(result));
},
error : function(x,t,m){
if(t==="timeout"){
alert("got timeout."+t)
} else{
alert(t)
}
}
});
});
});