您的位置:首页 > 其它

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

2017-06-09 16:07 120 查看
遇到一个bug,是有关ajax异步操作的,我就一直想都没有找到好的解决办法



出现的问题就是 客户想要做操作:选定一条数据->点击解锁/锁定–>刷新并自动选定第一条数据

想要的效果是 选定一条数据->点击解锁/锁定–>刷新并选定原来的那条数据

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

$("#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
});

}
}


结论就是不要在一颗树上吊死,小白水平,说得不清晰的不要打我哈,有错误的地方欢迎斧正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax-逻辑