废话不多说, 上源码
   function reg() {
              var txtName = $("#<%=txtName.ClientID%>");
              var lblName = $("#<%=lblName.ClientID%>");
              if (txtName.val().length == 0) {   //如果账号为空
                  lblName.text("×请输入用户名").css("color", "red");
                 return false;
              }
              else if (txtName.val().length < 6) {
                  lblName.text("×用户名不能少于6位").css("color", "red");
                  return  false;
              }
              else {
                  $.ajax({
                      type: 'POST', //用POST方式传输
                      dataType: 'json', //数据格式:JSON
                      url: 'checking.ashx', //目标地址
                      data: 'name=' + txtName.val(), //文本框里的用户名
                      //接收数据完毕
                      success: function (json) {
                          if (json.verify == '0') {
                              $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
                              alert('草泥马成功了');
                              return true;
                          } else {
                              $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
                              return false;
                          }
                      }
                  });
              }
                 return false;
          }
问题是无论怎样, 这个方法都是返回false;  我执行到$("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green"); 这狗日的还是给我返回false, js  大牛快来看看 , 100分属于你!! 

解决方案 »

  1.   

    看不懂JQ,我本身只会些JS,你把最后一个花括号的前一行代码,也就是最后一行return false;
    注释掉看下
      

  2.   

    function (json) 
    {
      alert(json.verify的值是多少?)   ...
    }
      

  3.   

    $.ajax({
                url:"selectFakeAction.action",
                async:false,//设置同步
      

  4.   

    在后台加个断点,看返回什么,是不是JSON格式的字符串。
      

  5.   

    嗯,看看json.verify的值是什么,
    如果 alert(json.verify) 看到的是 0 那么 if (json.verify+0 ==0)看看
      

  6.   

     success: function (json) {
                              if (json.verify == '0') {
                                  $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
                                  alert('草泥马成功了');
                                  return true;
                              } else {
                                  $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
                                  return false;
                              }
                          }
    error :function(josn){
       alert(json)
    }
    ______________________
    如果后台返回的不是JSON格式的字符串,是走error指定的函数的。
      

  7.   


    正确,ajax默认异步执行。虽然ajax提交了,但是先返回下面的false
      

  8.   

    “我执行到$("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green"); 这狗日的还是给我返回false”
    呵呵,你这是异步执行啊,你执行了function (json) 函数,返回return true;但这个值并不属于function reg() 这个函数的
    JQ里我不懂,但是在纯JS里的,代码在执行到这一块时:
    else {
                      $.ajax({
                          type: 'POST', //用POST方式传输
                          dataType: 'json', //数据格式:JSON
                          url: 'checking.ashx', //目标地址
                          data: 'name=' + txtName.val(), //文本框里的用户名
                          //接收数据完毕
                          success: function (json) {
                              if (json.verify == '0') {
                                  $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
                                  alert('草泥马成功了');
                                  return true;
                              } else {
                                  $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
                                  return false;
                              }
                          }
                      });
                  }
    //这时候工作进程会新开一条线程去处理这个请求,也就是异步的说法
    而本身的主线程(也就是reg()函数),则不会等待异步,在分好新线程服务于异步请求后,将继续执行自己当前线程的后继代码//这里补充一下,自由微软官方的异步回调机制有个参数可以指定是同步或者异步执行Ajax的,不过有点烦,这个机制服务处理只能有一个,不灵活,所以我喜欢自己写
      

  9.   

    你要把验证和注册分开放,就是不要放在一个function里面。
    或者像3楼说的设置同步,但是一般不建议这么做。
      

  10.   


    后台返回是JSON ! 设置同步。。我试试
      

  11.   


    不行啊 ,设置了同步,虽然ajax方法返回true了,  但是reg()返回的还是false , 难道ajax返回的ture不属于reg() ????
      

  12.   

    不要设置同步,两个方法解决一是验证和执行分开在ajax 成功的回调函数中调用执行方法二是保持现有思路  用标记变量来区分同样也是在 ajax 成功的回调函数中重新调用方法
      

  13.   


    在ajax成功的对调函数中。不用调方法 , 我需要获取的是返回的true . 大牛 你直接把代码晒出来吧 - -!
      

  14.   

    else {
                      var serverRegSuccess = false;
                      $.ajax({
                          type: 'POST', //用POST方式传输
                          dataType: 'json', //数据格式:JSON
                          url: 'checking.ashx', //目标地址
                          data: 'name=' + txtName.val(), 
                          async: false,
                          success: function (json) {
                              if (json.verify == '0') {
                                  $("#<%=lblName.ClientID%>").text("√恭喜您用户名可以注册").css("color", "green");
                                  alert('草泥马成功了');
                                  serverRegSuccess = true;
                              } else {
                                  $("#<%=lblName.ClientID%>").text("×用户已被注册").css("color", "red");
                                  serverRegSuccess = false;
                              }
                          }
                      });
                  }
                     return serverRegSuccess;
      

  15.   

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
      <title>无标题页</title>
    </head>
    <body> 
      <form>
      please enter: true or false 
      <input type='text' id='txt' onchange='document.getElementById("div").innerHTML="";' value='false' />    
      <br />
      <input type="submit" onclick="return ajax();" id='btn' value='click me'/><div id='div'></div>  
        </form>
    </body>
    </html>
    <script type="text/javascript">
         var ajax=function(){
             if(document.getElementById('btn').flag){                
                 alert('成功会执行到我');
                 return true;
             }
             else{
                 setTimeout(callback,2000);
             }
             return false;                 
         } 
         var callback=function(){
             var result=document.getElementById('txt').value;
             if(result=='true'){
                  document.getElementById('btn').flag=true;
                  document.getElementById('btn').click();
             }
             else{
                  document.getElementById('div').innerHTML='error';
             }
         }
    </script>
      

  16.   

    setTimeout(callback,2000);等同于 你的ajax请求