问题
我们在用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异步的优点了。