gpt4 book ai didi

javascript - 离开范围时丢失数据

转载 作者:行者123 更新时间:2023-11-30 00:28:37 25 4
gpt4 key购买 nike

我正在用 javascript 编程一些东西,有一次我进行了一个 ajax 调用我将数据存储在对象字面量中,但是当我离开范围时,我丢失了数据(即使在我的对象字面量中)

我不明白这里发生了什么

var menusView = {
menusRep: null,
init: function () {
this.menusRep = menusRepository;
this.getMenus();
},
getMenus: function () {

$.ajax({
url: 'data/voordeelmenus.json',
dataType: 'json',
success: function (data) {
menusView.menusRep.menus = data;
console.log(data);//console output: [object, object,...]
console.log(menusView.menusRep.menus);//console output: [object, object,...]
},
error: function (error) {
alert("error reading file: " + error);
}
});

console.log(menusView.menusRep.menus); //console output: []

}
}

var menusRepository = {
menus: []
}

我想我包含了所有重要的代码提前致谢!

最佳答案

我认为这是由于 AJAX 的异步特性以及您使用它的方式造成的。最终的 console.log 在 AJAX 调用完成之前触发,因此在创建 console.log 时数据不可用。

在我看来,您有几个选择。您可以在成功回调中使用返回的数据,在成功回调中使用另一个方法来处理返回的数据,或者您可以将 async 设置为 false 以阻塞方式处理 AJAX 请求。

 $.ajax({
url: 'data/voordeelmenus.json',
dataType: 'json',
async: false,
success: function (data) {
menusView.menusRep.menus = data;
console.log(data);//console output: [object, object,...]
console.log(menusView.menusRep.menus);//console output: [object, object,...]
},
error: function (error) {
alert("error reading file: " + error);
}
});

关于javascript - 离开范围时丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30483775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com