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

时间:2014-08-22 10:09:01

标签: javascript php ajax json

我在使用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);
?>

我认为问题可能在于创建数组的方式,但我无法使其工作。

我从请求中得到了这个结果:

{ "cidade" : [ { "id" : "5825",
    "nome" : "Almeria"
  },
  (...)
  { "id" : "6189",
    "nome" : "ESPANHA"
  }
],
"estado" : [ { "id" : "276",
    "nome" : "Madrid"
  },
  { "id" : "277",
    "nome" : "Andaluzia"
  },
  (...)
  { "id" : "294",
    "nome" : "Região de Múrcia"
  }
]
}

在尝试获取特定对象时,我无法访问AJAX请求响应的数据。

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

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

var obj = xmlhttp.responseText;
var parsed = JSON.parse(obj);
parsed[0].nome;

这是错误的来源:

TypeError:解析[0]未定义

我这样做是为了浏览内部的所有元素&#34; cidade&#34;。

PS:我只能使用javascript。

谢谢,

2 个答案:

答案 0 :(得分:0)

您的响应不是数组,因此您无法使用数字索引引用它。使用解析[&#34; cidade&#34;] [0] .nome代替。

答案 1 :(得分:0)

您的回复是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;
}