微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于ajax中async: false的作用

 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] 举报,一经查实,本站将立刻删除。

相关推荐