繁体   English   中英

未捕获的类型错误:无法读取简单 JSON 数组的未定义属性“长度”

[英]Uncaught TypeError: Cannot read property 'length' of undefined for simple JSON array

我正在以这种方式调用函数。

var responseinner = returnvalues(selectedeleemnt);

console.log(responseinner);      

显示为对象

console.log(JSON.stringify(responseinner)); 

显示为[{"name":"Coke","image":"json_images/coke_can.jpg","type":["250ml","300ml"],"price":["50","60"]}]

我尝试了所有解析这个值的方法

[{"name":"Coke","image":"json_images/coke_can.jpg","type":["250ml","300ml"],"price":["50","60"]}] 

但它总是抛出错误

未捕获的类型错误:无法读取未定义的属性“长度”

我使用了 JSON.parse , JSON.stringfy() 。 但没有帮助。

for (var i = 0; i < responseinner.type.length; i++) {

}

有人可以帮我吗

for(var i=0;i<responseinner.length;i++){ responseinner[i].type .... }

您的responseinner不是一个Object而是一个只有一个元素的Array

所以,你必须使用responseinner[0].type.length

如果它是一个对象,它将以{}而不是[]开头,以数组开头。

您可以使用of

for (let element of responseinner) {
    // do something../
    console.log(element.name)
}

使用 jquery 解析 json:

  $.each($.parseJSON(responseinner), function(key,value){
        //do something
    });

如果 responseinner 已经形成为一个 json 你不需要 $.parseJSON

或者

responseineer[0].name
responseineer[0].image
...

Json 数据进入一个数组,因此使用索引获取它的对象,以便访问它: responseineer[0]

试试test[0].type.length你有一个长度为 1 的数组的对象,因此你必须首先定义数组中对象的索引位置,这是微不足道的,因为数组有 1 个定义的索引。

for (var i = 0; i < responseinner[0].type.length; i++) {

}

for(var i=0;i

它工作正常,但是...如何在客户端分配给 gridview

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM