js作用域的一点小问题

kong_resty 发布于 2012/04/16 13:23
阅读 160
收藏 0

  var flag=true;
   function checkFormUtilFunction(errorMsgSpan,inputId,errorMsg,reg){
    document.getElementById(errorMsgSpan).innerHTML="";
    var username = document.getElementById(inputId).value;
    if(!reg.test(username)){
     document.getElementById(errorMsgSpan).innerHTML=errorMsg;
    }else{
     //要去服务器验证是否已经存在了
     if(inputId=="username"){
          var xhr=getXhr();
                                //与服务器进行连接 方式:get
                               xhr.open("get","checkUserName?username="+username);
                               //回调函数 readyState每次改变都会调用该函数
                               xhr.onreadystatechange= function(){
                                         if(xhr.readyState==4&&xhr.status == 200){
                                                if(xhr.responseText!=""){
                                                  document.getElementById("userNameErrorMsg").innerHTML=xhr.responseText;
                                                   flag=false;
                                                   alert(flag);
                                                }
                                          }
                               }
                           xhr.send(null); 
     }
     alert(flag);
     //假如  已经存在的话 给个 对勾图片
     if(flag){
       var image = new Image();
                image.src="img/success.png";
             document.getElementById(errorMsgSpan).appendChild(image);
              }
     }
    
   }

ajax返回数据了  flag=false  为什么第二个alert(falg) 还是true的

 

 

加载中
0
Zone
Zone
请搞清楚ajax的异步概念,和作用域毛关系都没有
0
中山野鬼
中山野鬼
这头像,吓人啊!!!!
0
xoHome
xoHome
我晕,你这做法真天真啊,你用的异步Ajax,在执行xhr.onreadystatechange= function(){
之前下面的代码就已经执行完了,你的最后判断应该在Aajax的回调方法里头也放一个。
返回顶部
顶部