关于ajax异步找不到解决办法的办法
2017-06-09 16:07
120 查看
遇到一个bug,是有关ajax异步操作的,我就一直想都没有找到好的解决办法
出现的问题就是 客户想要做操作:选定一条数据->点击解锁/锁定–>刷新并自动选定第一条数据
想要的效果是 选定一条数据->点击解锁/锁定–>刷新并选定原来的那条数据
当ajax里面有需要异步成功后执行的代码 在
里面写,但是当里面又存在需要先后顺序的时候呢?那么我该怎么做呢
然后就一直纠结在ajax那里无法自拔。。。找过$.when().done().then(),但是发现还是不行
最后的解决方法是,能不在ajax里面做的,就不在里面做,总之就是没找到能在ajax里面按我想要的顺序执行方法
最后是在tg的onLoadSuccess 里面做逻辑判断
结论就是不要在一颗树上吊死,小白水平,说得不清晰的不要打我哈,有错误的地方欢迎斧正!
出现的问题就是 客户想要做操作:选定一条数据->点击解锁/锁定–>刷新并自动选定第一条数据
想要的效果是 选定一条数据->点击解锁/锁定–>刷新并选定原来的那条数据
//原来的锁单方法 //锁单 $("#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 }); } }
结论就是不要在一颗树上吊死,小白水平,说得不清晰的不要打我哈,有错误的地方欢迎斧正!
相关文章推荐
- 关于ASP.NET,站点中有文件,却出现找不到文件、404错误的解决办法
- 关于JFreeChart的standardlegend类找不到的解决办法
- 关于VS调试时出现的找不到可执行文件问题的可能的解决办法
- 关于android安装sdk时找不到jdk的解决办法
- 关于VS2008下提示找不到MSVCP90D.dll的解决办法
- 关于android安装sdk时找不到jdk的解决办法
- 关于AjaxControlToolkit的Accordion控件在vs2008下报错的问题及解决办法
- 关于Jquery Ajax 在IE中异步调用失败的解决办法
- 关于Matlab找不到vs2008或vs2005编译器的解决办法
- 关于AjaxControlToolkit的Accordion控件在vs2008下报错的问题及解决办法
- 关于dll文件的生成以及找不到jni.h的解决办法
- 关于VC2008下提示找不到MSVCP90D.dll的解决办法
- 关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
- 关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
- AjaX异步请示中文乱码的解决办法
- 关于本站提供的Windows 7下硬盘安装xp提示找不到路径问题的原因及解决办法
- 关于VC2008下提示找不到MSVCP90D.dll的解决办法
- 关于dll文件的生成以及找不到jni.h的解决办法
- AJAX异步获取HTML之后 JQuery EasyUI 的界面重绘的解决办法
- 关于AjaxControlToolkit的Accordion控件在vs2008下报错的问题及解决办法