检索和使用json关联数组
Retrieving and using a json associative array
我使用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])它会显示undefined
正如我在注释中提到的,php关联数组变成了javascript对象,不能以数字方式访问。
一个解决方案是发送一个对象数组:
while ($row = $stmt->fetch_assoc()) {
$json[]= ['key'=>'item_'.$row['id'] , 'value' => $row['name']];
}
data[0].key;
data[0].value;
EDIT在这个例子中显然是一个误导人的名字,最好用别的名字:
$json[]= ['id'=>'item_'.$row['id'] , 'value' => $row['name']];
//js
data[0].id;
尝试使用$.each()
来遍历该对象,
$.each(data,function(key,val){
console.log(key,val);
});
演示如果您想访问它而不迭代它,那么只需使用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;
});
演示相关文章:
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 具有关联数组数据集的D3.js表
- 后关联数组使用jquery ajax
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 存储在变量中的关联数组中的访问键
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 关联数组,并使用父数组d作为selection.data()的源数组
- 获取关联数组的标签
- JavaScript:如何在最接近值的关联数组中查找键
- 单击时显示关联数组的元素
- 关联数组 - 使用图像滑块显示键值
- Javascript从关联数组中查找最低数字(气泡排序方法)
- AngularJS过滤器不适用于我的数据:关联数组
- 获取关联数组中当前函数的键
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 正在检查JavaScript中是否存在关联数组
- 将数据附加到关联数组或维度数组