Php 为什么json_encode()不起作用

Php 为什么json_encode()不起作用,php,jquery,json,mysqli,Php,Jquery,Json,Mysqli,为什么这个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) { $res

为什么这个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);
        }
      });
}

在从mysql结果中读取第一个条目之后,您就发布了json。这将生成一个json构造,用于终止查询客户端的回复


相反,您必须首先将所有行收集到php内部的数组中,然后将整个数组转换为json结构

您在读取mysql结果的第一个条目之后立即发布json。这将生成一个json构造,用于终止查询客户端的回复


相反,您必须首先将所有行收集到php内部的数组中,然后将整个数组转换为json结构

您并没有给出一个json响应,而是给出了与您的迭代次数相同的响应

好的语法应该是:

PHP:

JS:


您并没有给出一个json响应,而是给出了与您的迭代次数相同的响应

好的语法应该是:

PHP:

JS:


通过查看语法突出显示+杂乱的缩进、空格,您可以判断是否有问题<代码>评估。。。通过查看语法突出显示+杂乱的缩进、空格,您可以判断是否有问题<代码>评估。。。是的,这就是我在回答中解释的:-)是的,我看到了,但我的回答写起来要花更多的时间,所以速度要慢一些:-)+1。@Ninsuo谢谢。还有一个帮助。这段代码的简短版本是什么。比如将mysql结果直接写到json(等等)或者使用mysql assco而不是提供这么多查询?目的是使其简短,使用更少的查询…一个智能代码?这里只有一个查询。如果您不想要所有结果,您应该在请求中添加一个
WHERE
子句:类似于
SELECT*FROM-com-WHERE-column='value'按时间顺序描述(WHERE-column是com表中的一列,并对您要查找的值进行赋值)。@Ninsuo,Plz还可以查看一下。是的,这就是我在回答中解释的:-)是的,我看到了,但我的答案写起来要花更多的时间,所以速度较慢:-)+1。@Ninsuo谢谢。还有一个帮助。这段代码的简短版本是什么。比如将mysql结果直接写入json(等等)或者使用mysql assco而不是提供这么多查询?目的是使其简短,使用更少的查询…一个智能代码?这里只有一个查询。如果您不想要所有结果,您应该在请求中添加一个
WHERE
子句:类似于
SELECT*FROM com WHERE column='value'ORDER by time DESC
(其中column是com表中的一列,并为您要查找的值赋值)。@Ninsuo,Plz还可以查看一下。更准确地说,就在他用非空
文本
读取第一行之后。更准确地说,就在他用非空
文本
读取第一行之后。
$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);
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);
           }
        });
    });

}