虽然一直清除ajax是异步请求,但其实一直以来都只把它当成一种局部刷新技术,做项目的时候就遇到问题了。
需求是,当一个用户进入界面进行操作,选择了地区,进行相应的操作后点击保存后,当用户再次进入该界面,如之前他选择了广东-广州,那他下次进入,地区显示上还应该是广州-广东。
因为页面内容加载什么都用了ajax请求,故本人的操作是:页面加载调用ajax请求从数据库查询之前用户有无操作进行保存了数据,若有,则取出上次选择的地址(省和市)(假设该方法为functuionA()),然后再请求另一个ajax,获取所有的省市信息,省和市的显示之前获取到的前一次的省市信息(假设该方法为functuionB())。初始化的时候方法加载顺序为:
functuionA();
functuionB();
就这么个看起来简单的问题,最后结果始终不对,虽然方法加载的时候写的是先functuionA再functuionB,但是ajax是异步请求,你不知道functuionA和functuionB到底哪个先加载完。
解决办法是在ajax请求的时候加上
async: false
即将异步变成同步请求,请求的时候会按照先functuionA()再functuionB()的顺序请求,解决也就对了。
拓展:
functionA(){
var i = 1;
$.ajax({
……
success: function (result) {
var i = 2;
}
}
});
functionB(){
$.ajax({
……
success: function (result) {
var i = 3;
}
}
});
$(function(){
functionA();
functionB();
});
i的结果到底等于多少是未知的。
转载请注明原址:http://blog.csdn.net/zheng911209/article/details/47131607