首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确处理嵌套ajax请求的方法

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

Stack Overflow用户
提问于 2013-10-17 12:22:07
回答 1查看 576关注 0票数 0

我想知道是否有适当的方法来防止ajax请求同时调用任意404/500错误(同步或异步)。

例如,一个包含一些行和列的简单html表,用来显示一个500-800人的列表,其中有一些数据。

前进的路:

  1. 从后端获取ppl (带有组织单位的html表单),并在表的第一列中写入结果列表
  2. 通过personId获取每个人的事件(第一个请求的结果)
  3. 获取每个人的属性
  4. 为每个人获得角色
  5. 根据每个人的属性、角色和事件,从后端获取计算结果。

伪码:

代码语言:javascript
复制
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成功块中,如

代码语言:javascript
复制
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

一切都很好。如果我用这样的方法来解决

代码语言:javascript
复制
 document.ajaxStart/Stop(function(){  //if table columns i expected are filled do next}

我必须检查所有必要的表格列是否已经填充了数据。

有没有什么真正正确的解决办法我只是想不起来?(jQuery版本1.2 /IE V7-8 ^)

EN

回答 1

Stack Overflow用户

发布于 2013-10-17 12:48:01

“如果可能,更新jquery和ie版本”

首先,为什么要在单个进程中调用多个服务器调用。

如果将所有进程合并到一个请求和响应周期中,在java代码中完成所需的数据处理会更好,不要重复执行请求和响应。

任何方式都可以使用jquery,它返回ajax调用的状态。

代码语言:javascript
复制
     $.post("url",function(result,status){{
            if(status == success){
    //continue....
    }else{
          alert("Sorry something went wrong");
         }
      }});

就像这样,检查所有的请求是否成功完成。

我强烈建议您考虑将所有ajax调用合并到一个请求中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19426634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档