使用javascript获取JSON返回的数组中的特定值

使用javascript获取JSON返回的数组中的特定值,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我在使用AJAX调用获取从PHP文件返回的数组中的内容时遇到问题 下面是我从数据库中获取内容的php文件的一部分: <? ... $sql = "SELECT id, nome FROM (SELECT cod_district AS ID, district AS nome FROM pms_district WHERE

我在使用AJAX调用获取从PHP文件返回的数组中的内容时遇到问题

下面是我从数据库中获取内容的php文件的一部分:

<?
...
$sql = "SELECT id,
               nome
        FROM  (SELECT  cod_district AS ID, 
                       district AS nome
               FROM    pms_district
               WHERE   cod_pais =".$cod_pais.")
        ORDER BY id";
$state = array();
if ($db->query($sql)) {
    while ($db->next_record()) {
        $state['id']    = $db->f('id');
        $state['nome'] = utf8_encode($db->f('nome'));
        $return_state[] = $state;
    }
}

$sql = "SELECT id,
               nome
        FROM  (SELECT  cod_cidade AS ID,
                       cidade AS nome
               FROM    c_cidade
               WHERE   cod_pais =".$cod_pais.")
        ORDER BY id";

$city = array();
if ($db->query($sql)) {
    while ($db->next_record()) {
        $city['id'] = $db->f('id');
        $city['nome'] = utf8_encode($db->f('nome'));
        $return_city[] = $city;
    }
}

$return = array('estado' => $return_state, 
                'cidade' => $return_city
                );

echo json_encode($return);
?>
在尝试获取特定对象时,我无法访问AJAX请求响应的数据

(我在执行console.log(xmlhttp.responseText)时得到上面显示的响应)

这是用于访问返回值的代码:

var obj = xmlhttp.responseText;
var parsed = JSON.parse(obj);
parsed[0].nome;
这就是错误的来源:

TypeError:parsed[0]未定义

我这样做是为了检查“cidade”中的每个元素

PS:我只能使用javascript


谢谢,

您的响应不是数组,因此无法使用数字索引引用它。使用解析后的[“cidade”][0]。改为使用nome。

您的响应是JSON。您可以像下面这样访问您的数据

var cidade = parsed.cidade;
OR
var cidade = parsed['cidade'];

for(var i in cidade)
{
     var id = cidade[i].id;
     var nome = cidade[i].nome;
}

console.log(已解析)
显示了什么?它显示了[object object],但拉吉夫里西的回答解决了我的问题,谢谢。这确实是我的错误,谢谢!
var cidade = parsed.cidade;
OR
var cidade = parsed['cidade'];

for(var i in cidade)
{
     var id = cidade[i].id;
     var nome = cidade[i].nome;
}