在修改用户资料时  会有一个判断名称是否存在的判断  AJAX操作。问题就出在这里了。我首先初始化了一个变量var comname=false;其他判断我都省略了 看ajax操作
function JudgeUserName(value) {
 
             $.get("checkuser.aspx", { username: encodeURIComponent(value), flag: $("#txtmsg").val() },
                function(data){
                ajaxFun(data);
                //在这里 我设断点看了下comname得值为true  是正确的。
              });
              //这里comname就莫名其妙的被弄成false了
         }现在的问题是 用户点击修改资料  啥都没有改  点击修改的话 必须点击2次才能成功,第一次 是页面上显示检测通过,第二次才成功。
最后点击时 会执行这个函数  如果我在reg_check()后面加个alert的话  就只需要点击一次就可以了。这个时候comname依然是false不过当在if里面就莫名其妙的变成了true了function sub()
{
   reg_check();
   //alert(companyname);
   if(companyname&&tel&&companyaddress&&linkman&&email&&mobile)
   {
     //alert(companyname);
      return true;
   }
   else
   {
    return false;
   }
   
}
什么原因呢  搞了半天了。

解决方案 »

  1.   

    本帖最后由 net_lover 于 2011-08-03 08:35:31 编辑
      

  2.   

    孟子老师也在啊,在function(data)里 得到的data值是正确的  在这里根据得到的data值来进行对comname的判断:类似于这样 if(s=="2") {companyname=true;$("#ccompanyname").html("<font style='font-size:12px;'><img src='images/pic_right.gif'> 恭喜,该用户名可以注册!</font>");} 您看,我设断点看了下  companyname=true被执行了,然后再往下走 companyname被莫名其妙的改成false了
      

  3.   

    代码不全。
    如果要判断AJAX操作是否成功的话,最好在回调函数中判断,因为AJAX默认属性下是异步操作的。
      

  4.   

    孟子不是说了,ajax是异步的:   //这里comname就莫名其妙的被弄成false了你上面的JudgeUserName 你认为Ajax.get执行完后才判断comname,实际上是不等Ajax.get执行完判断就先执行了,你得把判断这一步放在Ajax.get返回里,去看看什么是异步吧。你说你点第二次才提交,那是因为Ajax.get返回后把值修改了,所以第二次提交直接没有验证用户名是否正确,就提交了,实际上还是错的。
      

  5.   


             function JudgeUserName(value) {
                 $.ajax({
                     type: "GET",
                     url: "checkuser.aspx",
                     dataType: "html",
                     data: "username=" + encodeURIComponent(value)+"&flag="+$("#txtmsg").val(),
                     beforeSend: function(XMLHttpRequest) {
                         $("#ccompanyname").text("正在查询....");
                         //Pause(this,100000);
                     },
                     success: function(msg) {
                          if(msg=="2") {companyname=true;$("#ccompanyname").html("<font style='font-size:12px;'><img src='images/pic_right.gif'> 恭喜,该用户名可以注册!</font>");}
                     }             });
             }
    改了下  楼上的朋友看下 对么
      

  6.   


    我在if(msg=="2")  下 弹出了 companyname值 为true  可是依然 点2次才执行
      

  7.   

    孟子老师技术分第二!谁是第一啊,,我找了俩天了,看了无数帖,都没找到第一的!!谁发给我看看啊!过过眼瘾!!thank you !
      

  8.   

    难道是提交的执行顺序 和 ajax 的执行顺序 有问题???
      

  9.   

    看你改的,我都想哭,你完全不懂异步,,你要把你的整个提交动作都放到success里面,不然你想做什么?说了是异步了,只有异步完成后才进行后续操作。
      

  10.   

    明白了,我需要把post的操作全部放到success里!
      

  11.   

    //这里comname就莫名其妙的被弄成false了你的代码中这个执行到位置时,$.get还没执行呢。先理解下异步、回调再找其他原因/