您的代码非常好 - 您只是误解了 JavaScript 中数组和对象之间的区别。
[{"ID":"4","NAME":"asdasd"},
{"ID":"3","NAME":"LOKS"},
{"ID":"1","NAME":"LOL"}]
这是一个包含三个元素的数组的 JSON。每个元素都是一个具有属性ID
和的对象NAME
。
假设数组存储在data
. 您可以使用简单的循环遍历该数组中的对象for
:
for(var i = 0; i < data.length; i++) {
var row = data[i];
// Here you can use row.ID and row.NAME
}
我猜你希望你的 JSON 看起来像这样:
{
0: {"ID":"4","NAME":"asdasd"},
1: {"ID":"3","NAME":"LOKS"},
2: {"ID":"1","NAME":"LOL"}
}
这实际上很糟糕,因为 JavaScript 中的对象没有排序(即使它们实际上在大多数浏览器中,但不能保证!)。因此,当迭代此类元素中的行时(使用for(var key in data)
),您不一定会首先获得 ID=4 的行,因为它的键为零。
但是,如果出于某种原因你真的想要一个对象而不是一个数组(你不需要!),你总是可以将数组转换为对象:
echo json_encode((object)$json_values);
作为旁注,出于安全原因,通常将对象作为 JSON 中的顶级元素是一个好主意(您可以重新定义数组构造函数,然后包含带有脚本标记的顶级数组的内容,从而访问如果数据被 XHR 请求访问,通常受相同的源策略保护),所以我会像这样更改 PHP 代码:
echo json_encode(array('rows' => $json_values));