为什么这个json编码格式不起作用。如果我在所有括号之外写它。然后它工作,但只获得一行.Plz帮助
$sql=mysqli_query($database,"SELECT * FROM com ORDER by time DESC");
while($row=mysqli_fetch_array($sql)){
$mid=$row['id'];
$text=$row['text'];
if($text) {
$response=array();
$response['msg']=$text;
$response['id']=$id;
echo json_encode($response);
}
}
//$response=array();
// $response['msg']=$text;
// $response['id']=$mid;
// echo json_encode($response);
获得上述结果的Jquery。
function com(id){
$.post('load.php', {tocom:id},function(data) {
var json = eval('(' + data + ')');
if(json['msg'] != "") {
var msg=json['msg'];
var fro=json['id'];
$("#msg).html(fro+msg);
}
});
}
答案 0 :(得分:3)
你没有给出一个json响应,但是你的响应和你的迭代一样多。
良好的语法应该是:
PHP:
$sql=mysqli_query($database,"SELECT * FROM com ORDER by time DESC");
$final_response = array();
while($row=mysqli_fetch_array($sql)){
$mid=$row['id'];
$text=$row['text'];
if($text) {
$response=array();
$response['msg']=$text;
$response['id']=$id;
$final_response[] = $response;
}
}
echo json_encode($final_response);
JS:
function com(id){
$.post('load.php', {tocom:id},function(data) {
$("#msg").html('');
var json = eval('(' + data + ')');
$.each(json, function(i, row) {
if(row['msg'] != "") {
var msg=row['msg'];
var fro=row['fro'];
$("#msg").append(fro+msg);
}
});
});
}
答案 1 :(得分:2)
在从mysql结果中读取第一个条目后,您正在发布json。这会产生一个json结构,它终止你对查询客户端的回复。
相反,你必须首先将所有行收集到php中的数组中,然后将整个数组转换为json结构。