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,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。