【问题标题】:how to receive json data in reverse order using jquery getJSON如何使用jquery getJSON以相反的顺序接收json数据
【发布时间】:2016-07-03 18:10:49
【问题描述】:

我已经使用了一个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---)显示数据。

但是当我使用 jquery getJSON 函数在 html 中获取这些 json 数据时。 它以递增的格式显示(即 104,105,106,106,---)。

如何使用 getJSON 函数反转我在 html 中获取的数据。

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));
}



                });

【问题讨论】:

    标签: php jquery html json ajax


    【解决方案1】:

    顺序可能会改变,因为 Javascript 对象没有顺序。

    我会去掉 PHP 中的键,这样你就只有一个 Javascript 中的数组,它的顺序与你的 PHP 脚本中的顺序相同:

    在 json_encode 之前使用这个:

    $final = array_values($final)
    

    array_values 只是获取数组值并创建一个新数组,其中包含从 0 向上的数字键。

    【讨论】:

      【解决方案2】:

      您可以在返回的数据上调用 .get().reverse()。

      var sortedData = $(json).get().reverse();
      

      见https://jsfiddle.net/9sfb5e6j/

      【讨论】:

        【解决方案3】:

        只需以相反的方式循环遍历它:

        var kS = Object.keys(testJSON);
        
        for (var i=kS.length-1; i>=0 ; i--) {
        
             console.log(testJSON[kS[i]]);
        
        }
        

        【讨论】:

          猜你喜欢
          • 2019-12-10
          • 2011-06-04
          • 2018-04-17
          • 2018-06-20
          • 2023-03-19
          • 1970-01-01
          • 2013-01-14
          • 1970-01-01
          • 2016-05-19
          相关资源
          最近更新 更多