我想知道是否有任何正确的方法可以防止ajax请求在同时调用多个(同步或异步)时发送随机404/500错误
e.g。一个简单的html表,其中包含一些行和列,以显示包含一些数据的500-800人的列表
要走的路:
伪代码:
function createTableData(){
var selected;
var personIds;
//get personIds by selection and write them into table
object.executeJSONRequest(...,
{ _ts: new Date().getTime(),
input: selected
},function(data) {
// write result into table
// fill resourceIds with result param
},..);
getEvents(personIds);
getAttribtues(personIds);
getRoles(personIds);
calculateStuff(personIds);
}
function getEvents(personIds){
object.executeGetRequest('...',
{ _ts: new Date().getTime(),
ppl: personIds
},function(data) {
//add result to table
}
}
function getAttributes(personIds){...} //and so on..
如果我连续调用所有这些方法,有时在加载属性时有时会出现随机错误,有时在加载角色时,有时一切正常。
如果我把它们称为嵌套在每个ajax成功块中,如
function createTableData(){
object.executeJSONRequest(...
{ _ts: new Date().getTime(),
input: selected
},function(data) {
getEvents(..);
});
}
function getEvents(..){
object.executeGETRequest(...
{ _ts: new Date().getTime(),
input: selected
},function(data) {
getAttributes(..);
});
}
function getAttributes(..){ ...,function(data){ getRole(..)}); and so on
一切正常。如果我尝试使用类似
的解决方案 document.ajaxStart/Stop(function(){ //if table columns i expected are filled do next}
我必须检查所有必要的表colums,如果它们已经填充了数据。
有没有真正合适的解决方案我只是想不到? (jQuery版本1.2 / IE V7-8 ^^)
答案 0 :(得分:0)
“如果可能,请更新jquery和版本”
首先,为什么要在一个进程中调用多个服务器调用。
如果将所有流程合并到一个请求和响应周期中,最好在java代码中执行所需的数据处理。不要随意返回请求和响应。
你可以使用jquery ajax返回ajax调用的状态。
$.post("url",function(result,status){{
if(status == success){
//continue....
}else{
alert("Sorry something went wrong");
}
}});
像这样检查所有请求天气它成功完成。
我强烈建议您考虑将所有ajax调用合并为一个请求。