关键知识点:
添加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;
}
为了方便理解,所以网上又摘抄了一个例子
![关于js函数中发送ajax请求,返回值无效的问题解决方案](https://i-blog.csdnimg.cn/blog_migrate/2691dd35673fca1cfed53e71faf17d07.gif)
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);
如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。