1 function checkMobile(){ 2 //自动提示 3 var fdMobile=document.getElementsByName("fdMobile")[0].value; 4 var flag = false; 5 var url = ‘<c:url value="xxx.do?method=getFdMoblie"/>‘; 6 $.ajax({ 7 type: ‘get‘, 8 url: url, 9 data: {keyword: fdMobile},10 dataType: "json",11 async: false,//若无此,flag=false,同步请求,在后台无返回前,不执行return操作 12 success: function (text) { 13 14 if(text[‘key‘]==1){ 16 layer.tips(‘手机号有误,已存在!!‘,‘#_xform_fdMobile‘,{ 17 tips: [1,‘#E65600‘],18 time: 3000 19 }); 20 flag=true; 21 22 } 23 24 } 25 26 }); 27 28 return flag; 29 30 31 }
调用后台方法执行,返回ajax的回调函数,执行if验证,此时flag为true,若无11行代码,则teturn时flag仍为flase
为解决这一问题,加入第11行代码后,return为true
对async: false理解
async. 默认是true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程即先会执行return flag=false再执行success。若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。