解决使用Ajax方法时,无法将回调的数据存储到全局变量中使用
我们使用$.ajax时,有时候会需要把从后台获取到的数据存储在全局变量中,方便以后进行调用。
例如: var i=0; $(function () { $.ajax({ url: "/web/home/GetMenusList", type: "POST", success: function (data) { //例如data为1 i=data } }); console.info(i); });
这时候打印出来的数据其实还是0,那么这明显不符合我们需求,要解决这个问题首先我们要看一下Ajax同步和异步的功能区别
ajax请求(async:false|true)加载同步与异步的功能区别
1、异步情况:ajax单独开启一个请求,ajax请求未完成即window._code未被赋值时,外部先调用window._code,因为值为空undefined;
2、同步情况:ajax请求完成后(success或error等),window._code被赋值,后续外部操作才可以调用。
由此可以得出结论,如果我们要实现文章开头的需求,需要将Ajax的异步关闭,调用方法async: false
例如:
var i=0;
$(function () {
$.ajax({
url: "/web/home/GetMenusList",
type: "POST",
async: false,//关闭异步加载
success: function (data) { //例如data为1
i=data
}
});
console.info(i);
});
这时候打印出来的i值就是1了
注:使用Ajax进行动态添加HTML元素内容,如果添加的元素中包含绑定的事件,在使用append时必须使用Ajax的同步加载功能,如无绑定事件,则使用异步加载即可
版权声明:
作者:兴兴
文章:解决使用Ajax方法时,无法将回调的数据存储到全局变量中使用
链接:https://www.networkcabin.com/notes/462
文章版权归本站所有,未经授权请勿转载。
作者:兴兴
文章:解决使用Ajax方法时,无法将回调的数据存储到全局变量中使用
链接:https://www.networkcabin.com/notes/462
文章版权归本站所有,未经授权请勿转载。
THE END