最近作东西用到ajax,我在火狐下firebug打断点一点问题都没有,但是关了firebug,程序不进后台方法,纳闷了很久,历来没有遇到过这种状况,最后加了一个参数async:false好了,仍是
很纳闷,之前写了那么多ajax相关代码历来没遇到过这种状况,原来对asy:nc:false的含义不大了解,还有可能和如今这个平台有关系吧。
async boolean default: true
by default, all requests are sentasynchronous (e.g. this is set to true by default). if you need synchronousrequests, set this option to false. note that synchronous
requests may temporarily lock the browser,disabling any actions while the request is active.
async. 默认是true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。若要将其设置为false
,则全部的请求均为同步请求,在没有返回值以前,同步请求将锁住浏览器,用户其它操做必须等待请求完成才能够执行。
下面查看一个示例:
var temp;
$.ajax({
async: false,
type : "post",
url : defaultpostdata.url,
datatype : 'json',
success : function(data) {
temp=data;
}
});
alert(temp);
这个ajax请求为同步请求,在没有返回值以前,alert(temp)是不会执行的。
若是async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。
不过上面设置同步请求的方法,有网友曾经反馈将async设成false后, 原意是想返回数据了再执行$.ajax后面的脚本, 没想到这个地方却致使了在火狐浏览器下出现闪屏(firefox 11.0),滚
动条下拉到底部触发ajax的状况。最后只能将async:false注释掉,也就是async为ture的状况下,成功解决了火狐浏览器滚动条下拉到底部触发ajax出现闪屏的问题。ajax