Javascript 无法读取属性';推动';空的
我有一个可以在本地主机上运行的页面。。当我把t放在远程服务器上时,它给出了一个错误。返回错误的代码是Javascript 无法读取属性';推动';空的,javascript,jquery,typeerror,Javascript,Jquery,Typeerror,我有一个可以在本地主机上运行的页面。。当我把t放在远程服务器上时,它给出了一个错误。返回错误的代码是 var $app_list = localStorage.getItem('LsAppList'); var AppListJson = JSON.parse($app_list); AppListJson.push({ "extapp_id": appdetail.get("addAppId"), "desc": appdetail.get
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
.push()
方法只能用于阵列
您似乎没有将项目存储在localStorage
中,这就是为什么它返回null
是每个域(更具体地说)。与远程域关联的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 = [];
}
每当用户清除浏览器数据或切换浏览器/设备时,就会出现这种“没有以前存储的数据”的情况,因此必须正确处理
您可能已经了解到,错误的根本原因是
localStorage。当当前域中没有为给定的键存储值时,getItem(key)
返回null
。然后JSON.parse(null)==null
和null.push()
抛出
作为挑剔,我建议检查变量命名:
- 不要对非构造函数使用
PascalCase
命名
- 不要将
camelCase
与下划线命名约定混用
- 建议阅读:
而且,AppListJson
不是JSON,它是一个本机数组。JSON只能存在于字符串上下文中,也就是说,您的$app_list
是JSON。关于JSON/not JSON的更深入解释: