我的服务中发生了一个ajax调用,它需要更多的时间来完成请求。但是最后,如果我检查日志,这个请求在2分钟内获得成功。
现在的问题是现代浏览器不会等待此请求超过1分钟。如果请求在1分钟内未完成,则会以HTTP错误504失败。
使用下面的代码,我试图连续调用ajax调用。但这每次都会创建一个新的请求。我的要求是,我应该不断调用这个ajax请求,直到我得到响应。同样使用下面的代码,它总是调用ajax请求。不知道该怎么阻止。
function fetchdata(){
$.ajax({
url: 'fetch_details.php',
type: 'post',
success: function(data){
// Perform operation on return value
alert(data);
},
complete:function(data){
setTimeout(fetchdata,5000);
}
});
}
$(document).ready(function(){
setTimeout(fetchdata,5000);
});
在我看来,你无法控制当客户将会下降请求如果上面需要的平均时间,因为你不知道是什么在(防火墙也减少这样的要求)。
但是,如果您的服务器端脚本正在处理复杂的数据,并且需要很长时间,那么明智的方法是适应新的标准并提出三种类型的请求:
- 用于调用处理数据的脚本
- 每隔X秒询问一次数据是否被处理和
- 一旦数据被处理, 停止检查循环并获取结果。