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

js中局部变量赋值出现错误(要输出之后在引用才会正确)
function judge(){
  var t3=0;
var url="/zz.app.engineering/app_engineering/projectOpportunity/judge/"+id+"";
$.getJSON(url,function(result){
t3=result;
});
alert(t3);
if(t3==1){
alert(t3);
$.alert("此项目机会已经存在!");
return false;
}
}
当项目存在,result=1时去掉红色的alert(t3)不出现预期的结果,不去掉会得出结果,但是弹出的t3的值顺序是0 1
求解答呀,谢谢

------解决方案--------------------
因为那是异步执行的 去掉红色的提示之后 就会出现在判断t3==1的时候t3=result;还没执行,不去掉的话由alert所带来的时间足够让回调函数执行了t3=result;,所以才会出现那样的情况。所以解决方法就是在进行t3==1的判断时先判断回调函数是否已经执行
------解决方案--------------------
function judge(){
var boole=false;
var t3=0;
 var url="/zz.app.engineering/app_engineering/projectOpportunity/judge/"+id+"";
 $.getJSON(url,function(result){
 t3=result;
 
 alert(t3);
 if(t3==1){
 alert(t3);
 $.alert("此项目机会已经存在!");
 boole=false;

 }else{
boole=true;
 } 
 
}); 

return boole;
}

给你改进了一下,因和服务端交互时不可能马上返回值,你要写到$.getJSON的fn中通信成功反回值后你才可以判断,多看看ajax