Javascript 处理嵌套ajax请求的正确方法

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

我想知道在同时调用多个ajax请求(同步或异步)时,是否有合适的方法防止ajax请求传递随机404/500错误

e、 g.一个简单的html表格,包含一些行和列,显示500-800人的列表和一些数据

前进之路:

  • 从后端通过选择获取ppl(带有组织单位的html表单),并在表的第一列中写入结果列表
  • 通过个人ID获取每个人的事件(第一个请求的结果)
  • 获取每个人的属性
  • 获取每个人的角色
  • 根据每个人的个人属性、角色和事件,从后端为他们获取经过计算的内容
  • 伪代码:

    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返回下面列出的值,状态为“成功”、“未修改”、“错误”、“超时”或“解析器错误”