快速解决ajax返回值给外部函数的问题
如下所示:
functionvalidateUser(mya){ varval=mya.name; val=$.trim(val); varflag=true; if(val!=""){ varurl1="${pageContext.request.contextPath}/group/getUserCount" vardata1={"gid":val,time:newDate()}; $.post(url,data1,function(data){ //1表示用户名为空,可以注册 if(data=="1"){ alert("不能删除,改组中有用"); flag=false; }else{ flag=true; } }) if(flag==0){//没有有用户 returntrue; }else{ alert("改组中含有用户,不能删除"); returnfalse; } } }
问题:$.post的回调函数是在一个闭包中,有自己的作用域,返回值对于外部的函数不起作用,
可以在外部定义全局变量flag,但是$.post异步请求,提前返回了flag,flag永远的默认值,
解决方式:使用$.ajax,把异步请求设置为同步请求
其实ajax功能非常强大,可以直接不用拼接json
$.ajax({ url:url1, async:false, data:data1, success:function(data){ flag=data; }
以上这篇快速解决ajax返回值给外部函数的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。