返回JSON,使用Javascript编写

Returned JSON, write with Javascript

本文关键字:Javascript 编写 使用 JSON 返回      更新时间:2023-09-26

Hy all!

我有点小问题。我试图写一篇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);

有人能帮我把这些值写到表中吗?

您可以这样做。

更新:

$.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" );

您可以循环通过这样的对象:

没有从其原型继承的属性

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 ]是值。

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

编写一个要显示的动态html表。

以下是打印表格的原理

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