Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';推动';空的_Javascript_Jquery_Typeerror - Fatal编程技术网

Javascript 无法读取属性';推动';空的

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

我有一个可以在本地主机上运行的页面。。当我把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
.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的更深入解释: