关于ajax异步找不到解决办法的办法

遇到一个bug,是有关ajax异步操作的,我就一直想都没有找到好的解决办法
tg是账单 tg2是账单下面的费用
出现的问题就是 客户想要做操作:选定一条数据->点击解锁/锁定–>刷新并自动选定第一条数据
想要的效果是 选定一条数据->点击解锁/锁定–>刷新并选定原来的那条数据

//原来的锁单方法
//锁单

            $("#btn_lockSingle").bind("click", function() {
                var selections = $('#tg').datagrid('getSelections');

                if(selections[0].isLock == "1"){
                    messager("提示:","该条订单已被锁定!");
                    return false;
                }
$.ajax({
         url:"${ctx}/bmscst/deblocking.do",
         type:"POST",
         async:false,
         data:{
                "guid":selections[0].guid,
                "lockUsrId":selections[0].lockUsrId
             },
         success:function(data){//ajax返回的数据
               if(messageTipReText(data)){
                    $("#tg").datagrid("load");
                  }
              }
        });


//原来的解锁方法
//解锁
            $("#btn_deblocking").bind("click", function() {
                var selections = $('#tg').datagrid('getSelections');
                if(selections[0].isLock == "0" || selections[0].isLock ==undefined){
                    messager("提示:","已经是解锁状态!");
                    return false;
                }

                $.ajax({
                     url:"${ctx}/bmscst/deblocking.do",
                     type:"POST",
                     async:false,
                     data:{
                            "guid":selections[0].guid,
                            "lockUsrId":selections[0].lockUsrId
                          },
                     success:function(data){//ajax返回的数据
                         if(messageTipReText(data)){
                             $("#tg").datagrid("load");
                        }
                    }
                });
            });


//tg里面的操作
onLoadSuccess: function(data) {
                    rows = data.rows;
                    if (rows[0] != undefined) {
                            $("#tg").datagrid('selectRow', 0);
                            ordId = rows[0].guid;
                        }
                        $("#tg2").datagrid({
                            url:'${ctx}/bmscst/page.do?ordId='+ordId
                        });

                    }
                }

当ajax里面有需要异步成功后执行的代码 在

success:function(data){//ajax返回的数据
    if(messageTipReText(data)){
        $("#tg").datagrid("load").datagrid('selectRow',index);
         i = 1;
         alert("1");
             }
    } 

里面写,但是当里面又存在需要先后顺序的时候呢?那么我该怎么做呢
然后就一直纠结在ajax那里无法自拔。。。找过$.when().done().then(),但是发现还是不行

最后的解决方法是,能不在ajax里面做的,就不在里面做,总之就是没找到能在ajax里面按我想要的顺序执行方法
最后是在tg的onLoadSuccess 里面做逻辑判断


//修改后的锁单方法
            var indexId = 0;

            $("#btn_lockSingle").bind("click", function() {
                var selections = $('#tg').datagrid('getSelections');
                indexId = $('#tg').datagrid('getRowIndex', $('#tg').datagrid('getSelected'));
                if(selections[0].isLock == "1"){
                    messager("提示:","该条订单已被锁定!");
                    return false;
                }
                $.ajax({
                     url:"${ctx}/bmscst/lockSingle.do",
                     type:"POST",
                     async:false,
                     data:{"guid":selections[0].guid},
                     success:function(data){//ajax返回的数据
                         if(messageTipReText(data)){
                            $("#tg").datagrid("load");
                        }
                     }
                });
            });

//修改后的解锁方法
            $("#btn_deblocking").bind("click", function() {
                var selections = $('#tg').datagrid('getSelections');
                indexId = $('#tg').datagrid('getRowIndex', $('#tg').datagrid('getSelected'));
                if(selections[0].isLock == "0" || selections[0].isLock ==undefined){
                    messager("提示:","已经是解锁状态!");
                    return false;
                }

                $.ajax({
                     url:"${ctx}/bmscst/deblocking.do",
                     type:"POST",
                     async:false,
                     data:{
                            "guid":selections[0].guid,
                            "lockUsrId":selections[0].lockUsrId
                          },
                     success:function(data){//ajax返回的数据
                         if(messageTipReText(data)){
                             $("#tg").datagrid("load");
                        }
                    }
                });
            });

//tg里面修改后的操作

onLoadSuccess: function(data) {
                    rows = data.rows;
                    if (rows[0] != undefined) {
                        if(indexId != null && indexId != undefined){
                            $("#tg").datagrid('selectRow', indexId);
                            ordId = rows[indexId].guid;
                        }else{
                            $("#tg").datagrid('selectRow', 0);
                            ordId = rows[0].guid;
                        }

                        $("#tg2").datagrid({
                            url:'${ctx}/bmscst/page.do?ordId='+ordId
                        });

                    }
                }

结论就是不要在一颗树上吊死,小白水平,说得不清晰的不要打我哈,有错误的地方欢迎斧正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值