0

大家好!

我有一个小问题。我试图写一个 ajax 帖子来从数据库中获取值,它的返回格式是一个 JSON 对象。如何从中获取键和值对?

发送ajax的jquery:

函数 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);

任何人都可以帮助我将这些值写入表格吗?

4

4 回答 4

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" );
于 2013-07-26T06:36:14.737 回答
0

Here is the principle for printing a table

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>";
    }
});
于 2013-07-26T06:40:44.453 回答
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 ]也是价值。

于 2013-07-26T06:24:27.537 回答
0

尝试使用 console.log(json.query-data[0]); 迭代查询数据 或foreach;

写一个动态的html表格来显示。

于 2013-07-26T06:37:10.830 回答