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);
有人可以帮我把这些值写到表格中吗?
答案 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>";
}
});