2016-07-03 42 views
0

我使用了一個PHP API來生成JSON數據接收以相反的順序JSON數據,如何使用jquery的getJSON

$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中獲得的數據。

jquery code in html;

function loadData(){ 
        var url = "http://localhost/ReadExchange/api.php"; 
        $.getJSON(url,function(json) { 
         console.log(json); 

        if(json) { 
         alert("Roger that"+JSON.stringify(json)); 
} 



       }); 

回答

1

的順序可能改變,因爲一個Javascript對象沒有順序。

我會擺脫PHP的按鍵,讓你只需要在Javascript陣列,它具有相同的順序,在你的PHP腳本:

$final = array_values($final) 

json_encode之前,只要使用此

array_values只需要數組值並使用數字鍵從0開始創建一個新數組。以相反的方式通過它

+0

工作!謝謝 – Cooolranjan

0

只是循環:

var kS = Object.keys(testJSON); 

for (var i=kS.length-1; i>=0 ; i--) { 

    console.log(testJSON[kS[i]]); 

}