jquery ajax中不能给变量赋值的原因及解决办法

问题

我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢?

原因

原因其实很简单,我们用的Ajax是异步操作,也就是async:true(默认情况),也就是说在你赋值的时候数据还没提取出来,你当然赋不进去,所以只要改成同步操作,即async:false就行~

解决方法

var result; 
$.ajax({ 
    type :"post", 
    url :地址, 
    data :"参数"+参数的值, 
    async :false, 
    success :function(data){
    //赋值给全局变量;
    	result = data; 
    }
});

以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。

另一个解决办法就是将你的代码直接写到success方法里。(但通常情况下并不是所有的业务逻辑都可以直接写到success里的)。

注意

如果设定为 async: false,就失去 ajax异步的优点了。

发布了19 篇原创文章 · 获赞 15 · 访问量 5568

猜你喜欢

转载自blog.csdn.net/MrKorbin/article/details/102702516