Javascript 处理嵌套ajax请求的正确方法
我想知道在同时调用多个ajax请求(同步或异步)时,是否有合适的方法防止ajax请求传递随机404/500错误 e、 g.一个简单的html表格,包含一些行和列,显示500-800人的列表和一些数据 前进之路:Javascript 处理嵌套ajax请求的正确方法,javascript,jquery,ajax,request,nested,Javascript,Jquery,Ajax,Request,Nested,我想知道在同时调用多个ajax请求(同步或异步)时,是否有合适的方法防止ajax请求传递随机404/500错误 e、 g.一个简单的html表格,包含一些行和列,显示500-800人的列表和一些数据 前进之路: 从后端通过选择获取ppl(带有组织单位的html表单),并在表的第一列中写入结果列表 通过个人ID获取每个人的事件(第一个请求的结果) 获取每个人的属性 获取每个人的角色 根据每个人的个人属性、角色和事件,从后端为他们获取经过计算的内容 伪代码: function createTable
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}
我必须检查所有必要的表列是否已经填充了数据
有什么真正合适的解决办法我只是想都不想?
(jQuery版本1.2/IE V7-8^^)“如果可能,更新jQuery和IE版本”
首先,为什么要在一个进程中调用多个服务器调用
最好是将所有流程合并到一个请求和响应周期中,用java代码处理所需的数据,不要来回处理请求和响应
任何方式都可以使用jqueryajax,它返回ajax调用的状态
$.post("url",function(result,status){{
if(status == success){
//continue....
}else{
alert("Sorry something went wrong");
}
}});
像这样检查所有请求是否成功完成
<>我强烈建议你考虑把所有的Ajax调用合并为一个请求。< /P>问题是我只得到了逐项列出的数据。它是一个现有的应用程序,java后端只提供单个内容,因此您可以根据需要将它们组合在一起。唯一的问题是,如果你需要更多的一种或两种东西,取决于彼此的结果,它会变得一团糟——jquery版本和IE客户端的用户也会被定义。您是否可以检查成功状态是否为200或类似的值?jquery返回下面列出的值,状态为“成功”、“未修改”、“错误”、“超时”或“解析器错误”