检索和使用json关联数组

时间:2014-07-03 11:01:59

标签: javascript php jquery ajax json

我使用jquery和ajax来检索在php中制作的动态数组,如下所示:

$json = array();

while ($row = $stmt->fetch_assoc()) {

    $json['item_'.$row['id']] = $row['name'];
}

header('Content-type: application/json; charset=utf-8');
echo json_encode($json);
exit;

如果我在浏览器中测试php文件,则输出:

{"item_3":"Simon","item_1":"Miriam","item_2":"Shareen"}

到目前为止一切顺利。但是如何在jquery中使用该数组?

我有这个jquery ajax:

$.getJSON( "json.php", function(data) {
    console.log(data);
});

在浏览器中测试该页面时,它将其置于控制台中:

Object {item_3: "Simon", item_1: "Miriam", item_2: "Shareen"}

那没关系好吗?或者item_x也应该用引号?

现在,如何在jquery中使用该数组?

如果我尝试console.log(data [0]),它会把未定义

2 个答案:

答案 0 :(得分:1)

尝试使用$.each()来遍历该对象,

$.each(data,function(key,val){
  console.log(key,val);
});

DEMO

如果您想在不重复的情况下访问它,只需使用bracket notation

即可
data['item_3'] //Simon

或直接访问它,

data.item_3 //Simon

然后根据您的意愿将其转换为数组,

var obj = {"item_3":"Simon","item_1":"Miriam","item_2":"Shareen"};

var convertedArray = $.map(obj,function(val,key){
    var obj = {}; obj[val] = key;
    return obj;
});

DEMO

答案 1 :(得分:1)

正如我在评论中提到的,php关联数组成为javascript对象,无法以数字形式访问。

解决方案是发送一组对象:

while ($row = $stmt->fetch_assoc()) {

    $json[]= ['key'=>'item_'.$row['id'] , 'value' => $row['name']];
}

in js:

data[0].key;
data[0].value;

编辑显然关键是这个例子中的误导性名称,最好将其称为其他内容:

$json[]= ['id'=>'item_'.$row['id'] , 'value' => $row['name']];
//js
data[0].id;