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
求解答呀,谢谢

解决方案 »

  1.   

    因为那是异步执行的 去掉红色的提示之后 就会出现在判断t3==1的时候t3=result;还没执行,不去掉的话由alert所带来的时间足够让回调函数执行了t3=result;,所以才会出现那样的情况。所以解决方法就是在进行t3==1的判断时先判断回调函数是否已经执行
      

  2.   

    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
      

  3.   

    那如果ajax是别人做好封装的呢?怎么判断呢?
      

  4.   

    $("#seachCoach").click(function(){
    var param={
    oper: 5,
    Coach: <%=userinfo.getTrs14().getTrs1400()%>,
    TJC0600: $("#Ctjc06").val()
    }
    var str=$.param(param);
    $('#TJS1704tree').jqGrid('setGridParam',{url:url+"?"+str}).trigger('reloadGrid');
    var gr=go();
    alert(gr);
    if(gr<=0){ 
    alert("本驾校没有发现这辆车,或者这辆车已经在维修。请确定好信息再查看");
    }
    return false;
    })
    function go(){
    alert('aaaa');
    return $("#TJS1704tree").getDataIDs().length;
    }
      

  5.   

    $("#seachCoach").click(function(){
    var param={
    oper: 5,
    Coach: <%=userinfo.getTrs14().getTrs1400()%>,
    TJC0600: $("#Ctjc06").val()
    }
    var str=$.param(param);
    $('#TJS1704tree').jqGrid('setGridParam',{url:url+"?"+str}).trigger('reloadGrid');
    var gr=go();
    alert(gr);
    if(gr<=0){ 
    alert("本驾校没有发现这辆车,或者这辆车已经在维修。请确定好信息再查看");
    }
    return false;
    })
    function go(){
    alert('aaaa');
    return $("#TJS1704tree").getDataIDs().length;
    }