php - 带有多个json对象的json对象

标签 php mysql ajax json

我有一些 PHP 可以根据 MySQL 数据库的数据生成 JSON 对象

$addressData = mysql_query("SELECT * FROM address WHERE ContactID = $contactID")or  die("<br/><br/>".mysql_error());

while($r = mysql_fetch_assoc($addressData)){
    $rows[] = array('data' => $r);
}

// now all the rows have been fetched, it can be encoded
echo json_encode($rows);

这会生成以下 JSON 对象:

[
  {"address":
    {"AddressID":"10011","AddressType":"Delivery","AddressLine1":"4 Caerleon Drive","AddressLine2":"Bittern","AddressLine3":"","CityTown":"Southampton","County":"Hampshire","PostCode":"SO19 5LF","Country":"United Kingdom","ContactID":"10011"}},
  {"address":
    {"AddressID":"10012","AddressType":"Home","AddressLine1":"526 Butts Road","AddressLine2":"Sholing","AddressLine3":"","CityTown":"Southampton","County":"Hampshire","PostCode":"SO19 1DJ","Country":"England","ContactID":"10011"}}
]

当在 Ajax 中收到它并通过以下方式运行它时:

$.each(data, function(key, val) {
  string =string + "Key: " + key + " Value:" + val + "<br />";
});

打印以下内容:

Key: 0 Value:[object Object]

Key: 1 Value:[object Object]

关于如何访问数据中键 01 中的对象有什么想法吗?

最佳答案

这是因为 Object 的默认 toString 实现在连接到 String 对象时会导致“[object Object]”。您可以像往常一样访问 val 对象的字段,例如:

val.data.AddressID

像这样:

$.each(data, function(key, val) {
  string += "Key: " + key + " Value:" + val.data.AddressID + "<br />";
});

请注意,上面循环中的 val 是 JSON 代码的 {"data": ...} 部分,这就是为什么您需要指定 val.data. 来访问部分里面的地址数据。

此外,您可以简单地删除 data 嵌套级别,从而生成如下所示的 JSON 布局:

[
    {"AddressID":"10011","AddressType":"Delivery","AddressLine1":"4 Caerleon Drive","AddressLine2":"Bittern","AddressLine3":"","CityTown":"Southampton","County":"Hampshire","PostCode":"SO19 5LF","Country":"United Kingdom","ContactID":"10011"},
    {"AddressID":"10012","AddressType":"Home","AddressLine1":"526 Butts Road","AddressLine2":"Sholing","AddressLine3":"","CityTown":"Southampton","County":"Hampshire","PostCode":"SO19 1DJ","Country":"England","ContactID":"10011"}
]

使用此 PHP 代码:

while($r = mysql_fetch_assoc($addressData)){
    $rows[] = $r;
}

然后,您可以像这样访问循环中的地址数据字段:

$.each(data, function(key, address) {
  string += "Key: " + key + " Value:" + address.AddressID + "<br />";
});

关于php - 带有多个json对象的json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365616/

相关文章:

ajax - 带有模型装饰的 ASP.NET Web API

javascript - 从复选框选择更改 AJAX jQuery url

javascript - 使用 JSON 将表单变量传递给 php

java - 如何使用 PHP 和 android studio(服务器 00webhost)将数据存入数据库?

php - Mysql 到 Php,德语、瑞典语、冰岛语等字母的问题

mysql - 根据子查询中的计数显示表结果

php - 如何使用 sweetalert 单击确定后重新加载页面

php - Sublime Text 语法将特定的 php 文件突出显示为 js 文件

php - 一段时间后,在 PHP 的 CLI 中打印\r 到 STDOUT 中断

MySQL:当每个日期有多个值时,MAX(日期)