gpt4 book ai didi

javascript - 无法读取 null 的属性 'push'

转载 作者:行者123 更新时间:2023-12-02 17:29:50 26 4
gpt4 key购买 nike

我有一个在我的本地主机上运行的页面..当我将 t 放在远程服务器上时,它给出了一个错误。返回错误的代码是

  var $app_list = localStorage.getItem('LsAppList');
var AppListJson = JSON.parse($app_list);
AppListJson.push({
"extapp_id": appdetail.get("addAppId"),
"desc": appdetail.get("addAppName"),
"device_no": appdetail.get("devicenoValue"),
"validation_key": appdetail.get("activationkeyValue")
});

控制台日志是

Uncaught TypeError: Cannot read property 'push' of null
addToJson EncigoHome.js:126
n.extend.trigger kendo.mobile.min.js:9
s.extend._release kendo.mobile.min.js:15
i._userEvents.o.UserEvents.tap kendo.mobile.min.js:15
n.extend.trigger kendo.mobile.min.js:9
l.extend.notify kendo.mobile.min.js:13
u.extend._trigger kendo.mobile.min.js:13
u.extend.end kendo.mobile.min.js:13
l.extend._eachTouch kendo.mobile.min.js:13
l.extend._end kendo.mobile.min.js:13
arguments.length.t.(anonymous function) kendo.mobile.min.js:10
b.event.dispatch jquery-1.9.1.js:9593
v.handle

最佳答案

localStorage是每个域(更具体地说 same origin )。与远程域关联的 localStorage 无法访问存储在与本地主机关联的 localStorage 中的值。

您应该检查是否存在存储的值并回退到默认值或处理错误:

var $app_list = localStorage.getItem('LsAppList');
var AppListJson = $app_list != null ? JSON.parse($app_list) : [];
//...

更详细:

var $app_list = localStorage.getItem('LsAppList'),
AppListJson;
if ($app_list != null) {
AppListJson = JSON.parse($app_list);
} else {
// treat no LsAppList stored case
// you could show a message or set it to a default value
AppListJson = [];
}

每当用户清除浏览器数据或切换浏览器/设备时,都会发生这种“以前没有存储数据”的情况,因此必须正确对待。

<小时/>

正如您可能已经发现的那样,错误的根本原因是当没有为当前域中给定的key。然后 JSON.parse(null) === nullnull.push() 抛出。

<小时/>

作为一个挑剔的人,我建议检查你的变量命名:

  • 不要对非构造函数使用 PascalCase 命名。
  • 请勿将camelCase 与下划线命名约定混合使用。
  • 推荐阅读:Idiomatic.js naming .

而且,AppListJson 不是 JSON,它是一个原生数组。 JSON只能存在于字符串上下文中,也就是说,你的$app_list是JSON。关于JSON/非JSON更深入的解释:There's no such thing as a "JSON Object"

关于javascript - 无法读取 null 的属性 'push',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166489/

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