2013-07-26 51 views
0

Hy都!返回JSON,用Javascript寫的

我有一點問題。我試圖編寫一個Ajax帖子來從數據庫中獲取值,它的返回格式是一個JSON對象。 如何獲取密鑰並從中獲取值對?

jquery的哪個發送AJAX:

功能getTableData(){

 $.post('loader.php',getGetStr(),function(data){ 
         var json = $.parseJSON(data); 
         console.log(json); 
     }); 
    } 

的的console.log輸出是:

Object {query-data: Array[3]} 
query-data: Array[3] 
0: Object 
buy_type: "kiado" 
condition_type: "uj" 
district: "1" 
heat_type: "cirko" 
id: "1" 
lift_type: "all" 
parking_type: "all" 
price_max: "22" 
price_min: "10" 
prop_type: "lakas" 
room_max: "3" 
room_min: "1" 
street: "all" 
uid: "3" 
__proto__: Object 
1: Object 
2: Object 
length: 3 
__proto__: Array[0] 
__proto__: Object 

PHP代碼至極選擇權的東西,並將數據返回給ajax:

$ordering = array ("buy_type " . $_POST['buyType'],"prop_type  ".$_POST['propertyType'],"district ".$_POST['disctrict'], 
        "street ".$_POST['street'],"room_min  ".$_POST['roomMin'],"room_max ".$_POST['roomMax'], 
        "price_min ".$_POST['priceMin'],"price_max  ".$_POST['priceMax'],"condition_type ".$_POST['conditionType'],"heat_type ".$_POST['heatType'],"lift_type ".$_POST['liftType'],"parking_type ".$_POST['parkingType']); 

$user=$_SESSION["user"]; 
$whois = $mysqli->query('SELECT * FROM users WHERE uid='.$mysqli->real_escape_string($user).' '); 
$who = $whois->fetch_assoc(); 

switch($who['user_title']){ 
    case '0': 
     $res=$mysqli->query('SELECT * FROM searches WHERE uid='.$mysqli->real_escape_string($user).' 
       ORDER BY '.$mysqli->real_escape_string($ordering[0]).', 
         '.$mysqli->real_escape_string($ordering[1]).', 
         '.$mysqli->real_escape_string($ordering[2]).', 
         '.$mysqli->real_escape_string($ordering[3]).', 
         '.$mysqli->real_escape_string($ordering[4]).', 
         '.$mysqli->real_escape_string($ordering[5]).', 
         '.$mysqli->real_escape_string($ordering[6]).', 
         '.$mysqli->real_escape_string($ordering[7]).', 
         '.$mysqli->real_escape_string($ordering[8]).', 
         '.$mysqli->real_escape_string($ordering[9]).', 
         '.$mysqli->real_escape_string($ordering[10]).', 
         '.$mysqli->real_escape_string($ordering[11]).' 
        ') or die($mysqli->error); 
     while($ki=$res->fetch_assoc()){ 
      $tomb[] = $ki; 
     } 
     $tomb = array("query-data"=>$tomb); 
     echo json_encode($tomb); 

任何人都可以幫助我將這些值寫入表中嗎?

+0

而你嘗試過什麼原則? –

+0

這只是一個普通的Javascript對象,你可以用'json ['query-data']'來訪問它。這是一個可以迭代的數組。 – Barmar

+0

只需要一個建議,將'$ .post'的額外參數作爲'json'傳遞給你,所以你不需要使用'$ .parseJSON'。 ':即:$ .post(url,params,callback,'json')'; – bystwn22

回答

2

你可以做這樣的事情。

更新:

$.post('loader.php', getGetStr(), function(data) { 
    if (!data || !data['query-data']) { 
    // invalid json string, so dont process 
    return; 
    } 
    data = data['query-data']; 
    // create the table 
    var table = $("<table />").html('<thead></thead><tbody></tbody>'); 
    // inserted table head cols? 
    var thead = false; 

    // loop through 'query-data' 
    for(i = 0; i < data.length; i++) { 
    // append 'tr' element to 'tbody' 
    var tr1 = $("<tr />").appendTo(table.find("tbody")); 
    if (!thead) { 
     // if not finished creating table head cols, then append 'tr' elemnts to thead 
     var tr2 = $("<tr />").appendTo(table.find("thead")); 
    } 
    // loop if its an object 
    if (typeof data[i] === "object") { 
     for(j in data[i]) { 
     if (!thead) { 
      // if not finished creating table head cols, then append 'th' elements to thead 
      $("<th />").html(j).appendTo(tr2); 
     } 
     // insert our real dat to table rows 
     $("<td />").html(data[i][j]).appendTo(tr1); 
     } 
     // we finished creating table head cols 
     thead = true; 
    } 
    } 

    // append the table to whatever element you want, 
    // you can also use $("body").html(table); 
    table.appendTo($("body")); 
}, "json"); 
+0

太棒了!謝謝大家的幫助,它的工作:) –

+0

但我怎麼能寫這些查詢表? –

+0

不要使用'for .. in'來遍歷數組。 – finishingmove

0

你可以通過這樣一個對象循環:

沒有從它的原型

for(i in json) { 
    if (json.hasOwnProperty(i)) { 
     console.log(i, json[ i ]); 
    } 
} 

繼承屬性與它的原型繼承屬性

for(i in json) { 
    console.log(i, json[ i ]); 
} 


i是關鍵,json[ i ]是價值。

+0

但輸出不同。我怎樣才能獲得像關鍵,價值的價值? –

0

嘗試使用的console.log迭代查詢數據(json.query數據[0]);或者foreach;

編寫一個動態的html表格來顯示。

0

這裏是打印表

function printRow(item){ 
    var html = "<tr>"; 
    for(var key in item){ 
     html += "<td>"+key+"</td><td>"+item[key]+"</td">; 
    } 
    html += "</tr>"; 
    return html; 
} 
$.post('loader.php',getGetStr(),function(data){ 
    var json = $.parseJSON(data); 
    console.log(json); 
    for(var key in json['query-data']){ 
     var item = json['query-data'][key]; 
     var html = "<table>"; 
     html += printRow(item); 
     html += "</table>"; 
    } 
});