关键知识点:
添加async:false.即修改为同步 ;等ajax给bool赋值完毕后,才执行下面的js部分。而异步的话,还没有来得及赋值,就已经return了。
这是一个jquery写的ajax请求函数
function ac_checkcode(checkcode){
$.ajax({
url:"__URL__/checkCode",
data:{"checkcode":checkcode},
async:false,
type:"post",
dataType:"json",
success:function(json){
if (json.status){
$("#t_checkcode").html("验证码对啦亲!");
bool=true;//这里需要设置一个中间变量,具体是因为什么,我还不是很清楚。
}else{
$("#t_checkcode").html("验证码不正确哦!");
bool=false;
}
}
});
return bool;
}
综上所述,也就是
设置成同步请求,用中间变量 ,返回中间变量。
为了方便理解,所以网上又摘抄了一个例子
View Code
1 var temp;
2 $.ajax({
3 async: false,
4 type : "POST",
5 url : defaultPostData.url,
6 dataType : 'json',
7 success : function(data){
8 temp=data;
9 }
10 });
11 alert(temp);
这个ajax请求则为同步请求,在没有返回值之前,alert(temp)是不会执行的。
如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。