快速解决ajax返回值给外部函数的问题
如下所示:
function validateUser(mya){ var val=mya.name; val = $.trim(val); var flag=true; if(val != ""){ var url1="${pageContext.request.contextPath}/group/getUserCount" var data1= {"gid":val, time:new Date()}; $.post(url,data1,function(data){ // 1 表示用户名为空,可以注册 if(data=="1"){ alert("不能删除,改组中有用"); flag=false; }else{ flag=true; } }) if(flag==0){ //没有有用户 return true; }else{ alert("改组中含有用户,不能删除"); return false; } } }
问题: $.post的回调函数是在一个闭包中,有自己的作用域,返回值对于外部的函数不起作用,
可以在外部定义全局变量flag,但是 $.post异步请求,提前返回了flag, flag永远的默认值,
解决方式: 使用$.ajax,把 异步请求设置为同步请求
其实 ajax功能非常强大,可以直接不用拼接json
$.ajax({ url:url1, async:false, data:data1, success:function(data){ flag=data; }
以上这篇快速解决ajax返回值给外部函数的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
您可能感兴趣的文章
- 01-11ajax请求后台得到json数据后动态生成树形下拉框的方法
- 01-11layui的checbox在Ajax局部刷新下的设置方法
- 01-11ajax获得json对象数组 循环输出数据的方法
- 01-11解决ajax请求后台,有时收不到返回值的问题
- 01-11详谈ajax返回数据成功 却进入error的方法
- 01-11解决AJAX返回状态200没有调用success的问题
- 01-11Ajax实现动态显示并操作表信息的方法
- 01-11ajax实现从后台拿数据显示在HTML前端的方法
- 01-11ajax动态查询数据库数据并显示在前台的方法
- 01-11ajax异步读取后台传递回的下拉选项的值方法