首页 > ajax怎么返回值?

ajax怎么返回值?

       function checkUsername(username)
   {
       var check = username.match(/^[a-zA-Z0-9_-]{6,16}$/);
       var ret;
       if(check)
       {

           $.ajax({
               url: '<?php echo base_url('login/ajaxUsernameExist')?>',
               type:'post',
               data:"username = " + username,
               dataType:'json',
               success:function(data){
                   ret = parseInt(data.result);
               },
               error:function(data)
               {
                   ret = 3;
               }
           });

           return ret;
       }
       else
       {
           return 1;
       }
   }

代码如上所示,发现当分支进入ajax中的时候,会出现ret是undefined,请问在$.ajax中对ret赋值没有效果是什么原因?


这个是因为在执行success函数或者error函数时,上下文已经被切换了。ret在success或者error中就变成未定义的了。你可以将其命名为全局变量。或者使用jQuery Tiny Pub/Sub等技术解决。Good luck.


在 $.ajax({ 里面增加 async:false 变成同步,你的 return 就有效了


Ajax的A是什么意思?Asychronous异步。也就是说在你return ret时,success还没有执行,当然会变成undefined了。请理解回调这个概念,然后把你需要使用yet的地方放入一个function中当参数传进checkUsername里面并放入success里面执行,而不是把yet返回出去。

【热门文章】
【热门文章】