无法读取 ajax 中未定义的属性“长度”
Cannot read property 'length' of undefined in ajax
我试图获取数组中对象的数量,但我得到了未定义的"长度"。
我的js
..
success: function(data){
console.log(data.item.length);
},
我的菲律宾比索
<?php
$arr = array();
$arr["item"]["book"] = "harry porter";
$arr["item"]["available"] = true;
echo json_encode($arr);
?>
输出
{"item":{"book":"harry porter","available":true}}
通过HTTP(S)请求发送的所有内容都以字符串形式接收(至少在Ajax中)。当你收到一个 JavaScript 对象格式的字符串时,它被称为 JSON。 您需要将此 JSON 解析回可读的 JavaScript 对象。
您需要使用 JSON.parse
函数,这会将 JSON 转换为 JavaScript 对象。此外,.length
仅适用于数组而不是对象,因此您需要使用console.log(Object.keys(data).length);
您的函数如下所示:
data=JSON.parse(data);
console.log(Object.keys(data).length);
data = {"item":{"book":"harry porter","available":true}};
alert(Object.keys(data.item).length);
在
对 JSON 对象进行操作之前,必须将 JSON 字符串解析为 JSON 对象。
var obj = eval ("(" + data + ")");
顺便说一句,我看到该项目不是数组。如果你想把它变成一个数组,它必须是这样的
{item : [{"book" : "harry potter", "available" : true}, {..}]}
我尝试获取数组中的对象数量
在成功回调中,你得到了一个js对象,你想获取其中的objects
数。 因此,当您执行data.item.length
时,它会检查不可用的JS对象的长度。
相反,您必须检查 js 对象的键名,例如 item
在回调data
对象中可用。所以你正在寻找的代码段是这样的:
Object.keys(data).length
这将计算{"item":{}}
的键名称,因此在您的情况下,您只有一 (1)。
var obj = {"item":{"book":"harry porter","available":true}};
alert(Object.keys(obj).length)
因此,在您的成功回调中,您可以这样做:
success: function(data){
console.log(Object.keys(data).length);
},
alert(Object.keys(data).length);
你的代码可能喜欢这样
$.ajax({
url: "items.php",
type: "POST",
dataType: "JSON",
success: function(data) {
data=JSON.parse(data);
alert(Object.keys(data).length);
});
相关文章:
- 如何使用数组减少来求和对象属性长度,不带类型
- 我一直得到“无法获得未定义或空引用的属性'长度'”
- 数据表错误 - 无法读取未定义的属性“长度”
- 找不到未定错误的属性长度
- 剑道网格分组列 - 类型错误:无法读取未定义的属性“长度”
- Jquery 无法读取未定义的属性“长度”
- D3 JS - 未捕获的类型错误:无法读取未定义的属性“长度” - 似乎与数据问题有关
- 未捕获的类型错误:无法读取未定义的 [JavaScript] 的属性“长度”
- 无法读取 ajax 中未定义的属性“长度”
- 未捕获的类型错误:当存在父级时,无法读取未定义的属性“长度”
- 使用 Javascript 将样式动态添加到样式表,但我收到“无法读取未定义的属性'长度'”错误
- 无法读取数据表中未定义错误的属性“长度”.js
- 我如何解决 angularjs 中的“无法读取未定义的属性'长度'在检查与SeletedModel”
- 未捕获的类型错误:无法读取 d3.js 中未定义的属性“长度”
- 与正则表达式一起使用时无法读取属性长度 null 错误
- 我收到一个未捕获的类型错误:无法读取 jquery.main.js 上 null 的属性“长度”
- 无法读取未定义的属性“长度”
- Javascript在检查变量的长度时“无法读取未定义的属性'长度'”
- 可以't读取未定义的属性长度-AngularJS
- 当值为NULL时,无法读取未定义的属性长度