jQuery使用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

发表评论

电子邮件地址不会被公开。 必填项已用*标注