gpt4 book ai didi

javascript - 对 json 数组执行 .length 返回未定义

转载 作者:行者123 更新时间:2023-11-28 20:02:37 25 4
gpt4 key购买 nike

我有以下来自 ajax 调用的 json 编码数组

{"country":{"0":"United States of America","United States of America":{"states":{"0":"Alaska","Alaska":{"cities":["Adak","Akiachak","Akiak","Akutan","Alakanuk"]}}}}}

以下是我的ajax代码

$.ajax({
method: "POST",
url: "test.php",
data: "action=2",
cache: 'false',
success: function(abcd){
alert(abcd);
var obj = new Array();
var obj = $.parseJSON(abcd);
alert(obj.country.length);
}
});

当我尝试使用obj.country[0]时它返回“美利坚合众国”。但是当我尝试使用 obj.country.length 获取数组的长度时它返回undefined

我浏览了几篇文章,我看到的唯一区别是使用 dataType: json 和使用 header()在 .php 页面上将内容类型定义为 json。我已经尝试了两种方法,但都没有成功。在 .php 页面上,我已将以下声明声明为数组:

$data = array();
$data['country'] = array();
$data['country']['United States of America'] = array();
$data['country']['United States of America']['states'] = array();
$data['country']['United States of America']['states']['Alaska']['cities'] = array();

最佳答案

这是因为 obj.country 不是数组,而是对象。

对象用大括号 ({}) 括起来,数组用方括号 ([]) 括起来。请参阅http://json.org/了解更多信息。

在您的示例内容中,"cities":["Adak","Akiachak","Akiak","Akutan","Alakanuk"] 将是一个数组,您可以使用obj["国家/地区"]["美利坚合众国"]["州"]["阿拉斯加"]["城市"]

<小时/>

所以,从你的例子来看,这是可行的:

$us['name'] = "United";
$alaska['name'] = "Alaska";
$alaska['cities'] = array("city1", "city2");
$us['states'] = array($alaska)
$data = array($us);

我希望它会呈现为 [{"name": "United", "states": [{"name":"Alaska", "cities": ["city1","city2"]} ]}]

我确信它可以做得更好或更紧凑,但我在这方面没有太多的 PHP 经验。

关于javascript - 对 json 数组执行 .length 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21403431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com