0

この json エンコード形式が機能しない理由.すべての角かっこの外側に記述した場合、機能しますが、1 行しか取得できません.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);
        }
      });
}
4

2 に答える 2

3

あなたは1つの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);
           }
        });
    });

}
于 2012-12-01T07:54:07.130 に答える
2

mysql の結果から最初のエントリを読み取った直後に json を投稿しています。これにより、クエリを実行しているクライアント側の応答を終了する json 構造が生成されます。

代わりに、最初にphp内の配列にすべての行を収集し、次に配列全体をjson構造に変換する必要があります。

于 2012-12-01T07:50:09.663 に答える