jQuery使用Ajax利用回调函数给全局变量赋值
2014-03-26 16:06
jQuery
Ajax
异步
回调函数
摘要:Ajax 回调里给全局变量赋值总是失败,折腾了半天才发现是异步的问题,记录一下改成同步的两种方法。
在使用jQuery的$.post方法时,需要通过回调的函数对原有的全局变量赋值。 可是发现通过$.post从后台调用的数据始终没有赋值成功,全局变量仍然还是原来的值。 这是因为我们使用的Ajax是异步操作,当我们赋值的时候,后台数据还没有传递过来,赋值是没有成功的。如果流程上必须赋值成功后才能正常执行下面的操作,那么在进行$.post操作前需要将异步改成同步。 方法1:先设置同步在进行Ajax操作
//在全局或某个需要的函数内设置Ajax异步为false,也就是同步
$.ajaxSetup({
async : false
});
//然后再进行你的Ajax操作
$.post(地址, 参数, function(data, status) {
if (status == 'success') {
//赋值给全局变量
} else {
alert('wrong');
}
});
方法2:直接用$.ajax
$.ajax({
type : "post",
url : 地址,
data : "参数" + 参数的值,
async : false,
success : function(data){
//赋值给全局变量
}
});
参数async的含义是: async 类型:Boolean 默认值:true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。 注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。 如需要了解更多jQuery的Ajax参数,请访问:http://www.w3school.com.cn/jquery/ajax_ajax.asp