ajax + $.each遍历,浏览器调试模式正常、普通模式不正常。....深夜跪求指点...

先上代码:

// // AJAX 流程

$.ajax({
    type: "POST",
    dataType: "json",
    data: {"objectId": objectId},
    async: false,
    url: "allTask.jsp" ,
    success: function(result){
        // AJAX返回数据 处理逻辑
        step_curr = steps_arr.indexOf(result["current"])+1;
        //截取 至 curr状态
        curr_arr = steps_arr.slice(0, step_curr);
        // 遍历对象 result
        for(var e in result){
            if(条件...){
                objj["XXX"] = result[e];
            } else {
                var _j = curr_arr.indexOf(e.slice(6));
                if( _j > -1){
                    objj[""+curr_arr[_j]] = result[e];
                }
            }
        }
        // 类 group33, 操作显示。(.group33 初始是内联样式: display:none)
        curr_name = result["current"];
        $.each(result, function(index, value, array){
            if(条件...)){
                for(var k=0; k<value.length; k++){
                    if(条件A && 条件B) {
                        **$(".group33").show();
                        $("#submit").attr("data-tid", "xxxx");**
                        break;
                    }
                }
            }
        });
        //以下是ystep....
        $(".ystep").loadStep({
            steps: steps_arr,
            step: step_curr,
            objj: objj
        });
        $(".ystep").setStep(step_curr);
    },
    error:function(e,r,a){
        console.log("异常!!");
    }
});

代码如上,
目标;执行以下两句语句:

$(".group33").show();
$("#submit").attr("data-tid", "xxxx");  

实际情况:

在浏览器调试模式(且打了断点)下,代码确实进去执行了以上两句语句。
但是,在浏览器正常模式下,这两句语句没有被执行....

====(求问大神...)============

WHY?
是不是ajax异步的原因?(但我没找到任何异步造成的... 理由)

.....

阅读 2.1k
2 个回答

你上面设置了不使用异步,应该不是异步的原因。但是有一点,你对result进行了两次遍历,第一次用for,遍历的是对象,第二次用$.each,遍历的是数组,那这个result的类型是什么呢。

没有被执行

你打印一下,看看为什么没执行不就好了

console.log(条件A,条件B);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题