代码如下
viewPost:function(){
var deleteFlag = true;
new Request.JSON({
url: this.getFullUrl,
data:{"id":this.data.objId},
onComplete: function(json) {
if(json.result == 'success'){
if(json.data == null || json.data == 'undefined'){
deleteFlag = false;
}
}
}.bind(this)
}).send();
//alert("deleteFlag="+deleteFlag);
if(deleteFlag == true){
alert("true:deleteFlag="+deleteFlag);
}else{
alert("false:deleteFlag="+deleteFlag);
}
}
遇到的问题:1.当注释alert("deleteFlag="+deleteFlag)后,deleteFlag打印的结果为true;但当不注释后,打印的结果却为false,非常郁闷,望高手指点,等待中......

解决方案 »

  1.   

    还有一点忘记说了的,该js是在firefox下调试的
      

  2.   

    异步调用的话,可能结果还没返回时就执行到deleteFlag打印了,
    如果不注释alert。弹出窗口实际上为结果返回赢得了时间,当关闭弹出窗口打印deleteFlag,deleteFlag已经是返回的值了
      

  3.   

    viewPost:function(){ 
    var deleteFlag = true; 
    new Request.JSON({ 
    url: this.getFullUrl, 
    data:{"id":this.data.objId}, 
    onComplete: function(json) { 
    if(json.result == 'success'){ 
    if(json.data == null || json.data == 'undefined'){ 
    //1
    deleteFlag = false; //这里当加载成功,并且data无数据的时候执行


    }.bind(this) 
    }).send(); 
    //alert("deleteFlag="+deleteFlag); 
    if(deleteFlag == true){ //2
    alert("true:deleteFlag="+deleteFlag); 
    }else{ 
    alert("false:deleteFlag="+deleteFlag); 


    不加注释,执行2部分代码时,1部分代码还没有执行
    加注释,alert出消息框,点确定后才执行2部分代码,此是1部分代码已经执行
    所以结果不一样
      

  4.   

    原来这样,3#的和4#你们的解释一样,我觉得有道理
    小弟再想问一下,那要怎么样才能在json加载完毕后再打印的呢?该如何处理
      

  5.   

    在onComplete函数里就是了
    viewPost:function(){ 
    var deleteFlag = true; 
    new Request.JSON({ 
    url: this.getFullUrl, 
    data:{"id":this.data.objId}, 
    onComplete: function(json) { 
    if(json.result == 'success'){ 
    if(json.data == null || json.data == 'undefined'){ 
    deleteFlag = false; //这里当加载成功,并且data无数据的时候执行 

    }
    alert(deleteFlag);//在这里alert
    }.bind(this) 
    }).send(); }