如何使用jquery getJSON反向接收json数据


how to receive json data in reverse order using jquery getJSON

我使用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]]);
}