封装ajax调用数据问题的解决办法

由于$.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.csdn.net/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

猜你喜欢

转载自blog.csdn.net/IT_95/article/details/86229284