javascript - 无法读取ajax中未定义的属性 'length'

标签 javascript php jquery ajax

我尝试获取数组中的对象数量,但得到的“长度”为未定义。

我的js

..
      success: function(data){
        console.log(data.item.length);
      },

我的PHP

<?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);

关于javascript - 无法读取ajax中未定义的属性 'length',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27774655/

相关文章:

php - token 中的段数错误 (OAuth Google Api)

php - 如何使 HTML 表单输入变灰?

php - 通过 cURL 提交表单并将浏览器重定向到 PayPal

javascript - Highcharts 列 : add dynamically series with drilldown data

javascript - 如何显示 Outlook 365 插件的插件设置

javascript - 使用 var 或不使用 var 定义对象

javascript - 使 DiveIntoPython3 在 IE8 中工作(修复 Javascript 性能问题)

jquery - 使用 jQuery 更改 TD 上的背景图像时,T​​R 背景图像消失

JQuery 1.5 和新的 "Text JSON"数据类型

javascript - 对数字进行排序,使偶数在前