返回JSON,用Javascript编写

时间:2013-07-26 06:18:58

标签: php javascript ajax json

Hy all!

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

发送ajax的jquery:

function 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 个答案:

答案 0 :(得分: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" );

答案 1 :(得分: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 ]是值。

答案 2 :(得分:0)

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

编写一个动态html表来显示。

答案 3 :(得分: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>";
    }
});