由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求,则可以进行如下使用:
在$.post()前把ajax设置为同步:$.ajaxSettings.async = false;
在$.post()后把ajax改回为异步:$.ajaxSettings.async = true;
function rolecount(a,b){
var coun=2;
$.ajaxSettings.async = false;
$.get("response","controller=countrole"+"&Token="+b+"&roleId="+a,function(count){
coun=count;
})
$.ajaxSettings.async = true;
return coun;
}
var c=rolecount("1","3CW0TQZccr0VESrOQTE3PA==");
alert(c);
参考链接:https://blog.youkuaiyun.com/sunnyzyq/article/details/78730894
ajax改变同步异步
1 //同步
var temp;
2 $.ajax({
3
4 async: false,
5 type : "POST",
6 url : defaultPostData.url,
7 dataType : 'json',
8 success : function(data)
9 {
10
11 temp=data;
12 }
13
14 });
15
16 alert(temp);
这个ajax请求为同步请求,在没有返回值之前,alert(temp)是不会执行的。
如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。
不过上面设置同步请求的方法,有网友曾经反馈将async设成false后, 原意是想返回数据了再执行$.Ajax后面的脚本, 没想到这个地方却导致了在火狐浏览器下出现闪屏(Firefox 11.0),滚动条下拉到底部触发ajax的情况。最后只能将async:false注释掉, 也就是async为ture的情况下,成功解决了火狐浏览器滚动条下拉到底部触发ajax出现闪屏的问题。
参考链接 https://www.cnblogs.com/yiliweichinasoft/p/3667365.html