日期:2014-05-16  浏览次数:20464 次

js异步问题,循环遍历执行一个带弹出框的函数,求指导
js异步问题,循环遍历执行一个带弹出框的函数。总是最后一次遍历的弹出框将前面的给覆盖了。
for(var i=0;i<stackArray.length;i++){
 _savecheck1(){
     //判断该商户是否停用?
     停用的话:  弹出一个确认框,是否确认? 1
     点击确认的话:_savecheck2(){
         //判断终端是否停用
         停用的话:弹出一个确认框,是否确认? 2
         点击确认的话:_save(){
         //保存数据到数据库,根据执行结果弹出提示信息框,如:成功、失败、信息不全等
    }
        }
     不是停用的话,直接执行:_savecheck2(){
         //判断终端是否停用
         停用的话:弹出一个确认框,是否确认?
         点击确认的话:_save(){
         //保存数据到数据库,根据执行结果弹出提示信息框,如:成功、失败、信息不全等
       }
    }
}


执行的结果是前面遍历中弹出的弹出框都瞬间消失,页面只显示最后一次遍历的。在1处开始弹框,相当于前面的所有便利都没执行,只执行最后一次遍历的一样。

------解决方案--------------------
这样做就不友好了,不可能这么搞的。

//页面
if(!confirm("您确认停用吗?"))
    return;

var checkIds = "1,2,5,7,8,25";//取得所有选中的终端的id
//一次将所有要执行的id全部传过去
$.post("xxxxxx.xxx?id="+checkIds,function(msg){
    alert(msg);//成功或者失败
});

//后台
//执行存储过程,将所有id为传入参数的记录给更新为停用

--update 终端表 set 状态=停用 where id in (x,x,x,x) and 状态!=停用