在发起异步ajax请求的时候,期望在返回回调函数中将返回值赋值给前面的全局变量出现的问题:
var a;
$.post(url,function(data){
a = data;
});
console.log(a);
这里的a打出来是undefined的;
究其原因,因为ajax请求默认是异步请求,所以js解释执行的时候是不会进行等待ajax的返回,而是会直接进行下一步解释
执行,所以在回调函数中的赋值也没有效果;
解决:
1、可以将ajax请求的默认异步方式修改为同步方式这样可以赋值成功,即等待ajax请求的结果返回;
async:false;
$.ajax({
method:post,
url:url,
data:data,
async:false,
success:function(data){
//回调方法
}
})
2、另一种方法则是需要进行初始化的数据、方法直接在ajax请求里面执行这样也可以处理;
更多推荐
ajax请求返回值赋值问题
发布评论