日期:2014-05-20  浏览次数:20687 次

求高手解决JS回调疑问
代码大致如下:使用DWR调用后台方法,然后根据返回值决定变量的值
JScript code

var flag=false;
andonStopReasonAction.validateCode($("andonReason").value,function(str){
                           if(str=="no")
                           {
                               alert("代码有误!可能的原因:扫描的条码数据有误,不是系统自定义的条码类型");
                             $("andonReason").select();
                               flag = false; 
                           }else if(str=="ok")
                           {
                               flag = true;
                           }
                      }
                );
alert("1---"+flag);
alert("2--"+flag);
return flag;


疑问:两次执行alert时弹出不同的值,第一次弹出flag为声明时的值false
第二次弹出的是匿名函数中更改后的值

------解决方案--------------------
这个还真不太清楚,$("andonReason").value的值是多少? 使用了jQuery的选择器?
------解决方案--------------------
很正常的
ajax是异步执行的
先执行andonStopReasonAction.validateCode()
不管有没有执行完
都会接着执行
alert("1---"+flag);
接着执行
alert("2--"+flag);
接着执行
return flag;

你可以参考我另外一个帖子的回答http://topic.csdn.net/u/20111008/14/5f9a5ab6-fe37-4102-b3d5-d8bfb5ad9a86.html