我使用php api来生成json数据,
$db_result_set = $db->prepare('SELECT p.Id, p.FirstName, p.MiddleName, p.LastName, p.Gender, p.Location, p.Email, p.Mobile,p.Message,b.BookTitle, b.BookGenre, b.BookWriter, b.BookDescription FROM personaldetails AS p LEFT JOIN bookdetails AS b ON b.UserId = p.Id ORDER BY p.Id DESC');;
$db_result_set->execute();
$final = [];
foreach ($db_result_set as $u) {
if (!isset($final[$u["Id"]])) {
$final[$u["Id"]]= [
"Id" => $u["Id"],
"FirstName" => $u["FirstName"],
"MiddleName" => $u["MiddleName"],
"LastName" => $u["LastName"],
"Gender" => $u["Gender"],
"Location" => $u["Location"],
"Email" => $u["Email"],
"Mobile" => $u["Mobile"],
"Message" => $u["Message"],
];
}
$final[$u["Id"]]["books"][] = [
"BookTitle" => $u["BookTitle"],
"BookGenre" => $u["BookGenre"],
"BookWriter" => $u["BookWriter"],
"BookDescription" => $u["BookDescription"],
];
}
header('Content-type: application/json');
echo json_encode($final,JSON_PRETTY_PRINT);
这个API的输出是;
{
"110": {
"Id": "110",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"109": {
"Id": "109",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"108": {
"Id": "108",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"107": {
"Id": "107",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"106": {
"Id": "106",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"105": {
"Id": "105",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
},
"104": {
"Id": "104",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"Gender": null,
"Location": "",
"Email": "",
"Mobile": "",
"Message": "",
"books": [
{
"BookTitle": "",
"BookGenre": "",
"BookWriter": "",
"BookDescription": ""
}
]
我想在html中以降序格式显示数据(即110,109,108-)。
但是当我在html中使用jquery getJSON函数获取这些json数据时。它以递增格式显示(即104,105,106,106,——)。
如何使用getJSON函数反转我在html中获得的数据。
jquery代码;
function loadData(){
var url = "http://localhost/ReadExchange/api.php";
$.getJSON(url,function(json) {
console.log(json);
if(json) {
alert("Roger that"+JSON.stringify(json));
}
});
顺序可能会改变,因为Javascript对象没有顺序。
我将去掉PHP中的键,这样Javascript中就只剩下数组了,顺序和PHP中一样:
在json_encode:
之前使用$final = array_values($final)
array_values
只是获取数组值并创建一个新的数组,其中包含从0开始的数字键。
您可以对返回的数据调用.get().reverse()。
var sortedData = $(json).get().reverse();
见https://jsfiddle.net/9sfb5e6j/
以相反的方式循环执行:
var kS = Object.keys(testJSON);
for (var i=kS.length-1; i>=0 ; i--) {
console.log(testJSON[kS[i]]);
}