如何在html中正确显示json数据的数组?

时间:2015-05-06 16:05:46

标签: php arrays json

我的Ajax

$("form").on("submit", function () {
    var data = {
        "action": "test"
    };

    data = $(this).serialize() + "&" + $.param(data);
    $.ajax({
        type: "POST",
        dataType: "json",
        url: "ajax2.php", //Relative or absolute path to response.php file
        data: data,
        success: function (data) {

            $("#main_content").slideUp("normal",function(){

            $(".the-return").html("<br />JSON: " + data);
//how to alter this part to display data for each record in one div?

            });
        }
    });
    return false;

});

我的查询

$statement = $pdo->prepare("SELECT * FROM posts WHERE subid IN (:key2) AND Poscode=:postcode2");
    $statement->execute(array(':key2' => $key2,':postcode2'=>$postcode));
 // $row = $statement->fetchAll(PDO::FETCH_ASSOC);
  $json = array();
 while( $row = $statement->fetch()) {
     array_push($json, array($row['Name'], $row['PostUUID']));
 }

    header('Content-Type: application/json');
    echo json_encode($json);

目前以此格式显示的结果:

JSON: jack,55421894ab602,test,55439324cc43d

但我希望显示如下:

 Name:jack,
 Id:55421894ab602
.....and some other info-

 Name:test
 Id:55439324cc43d
.....and some other info-

这部分:

$(".the-return").html("<br />JSON: " + data);

我试过了:data[0]; 但是当我这样做时,只显示第一条记录。

我尝试的是:

data[0]本身就是一个数组。如何显示该数组以及在nice html中获取的其他记录?

编辑:通过这些编辑过的代码,我只能检索最后的结果,它不会循环遍历数组。

AJAX     成功:功能(数据){

            $("#main_content").slideUp("normal",function(){

            //$(".the-return").html("<br />JSON: " + j_data);
            for (i = 0; i < data.length; i++) {
            $(".the-return").html("<div>Name:" + data[i].name + "<br/>Id:" + data[i].id);
        }
            console.log(data); // this shows nothing in console,I wonder why?
            //alert(j_data);
            });
        }

PHP

$json = array();
 while( $row = $statement->fetch()) {
     //array_push($json, array($row['Name'], $row['PostUUID']));
     array_push($json, array("name" => $row['Name'], "id" => $row['PostUUID']));
 }

    header('Content-Type: application/json');
    echo json_encode($json);

1 个答案:

答案 0 :(得分:2)

首先,要获取模板中字段的名称,您需要将它们存储在数组中:

array_push($json, array("name" => $row['Name'], "id" => $row['PostUUID']));

json_encode之后的结果 - &gt; {&#34;名称&#34;:&#34; TheName&#34;&#34; ID&#34;:&#34; TheID&#34;}

接下来,在你的js代码中,如果它收到的json有效,你可以循环:

success: function (data) {
    $("#main_content").slideUp("normal",function(){
        for (i = 0; i < data.length; i++) {
            $(".the-return").html("<div>Name:" + data[i].name + "<br/>Id:" + data[i].id);
        }
    }
}

当然,您可以在div中添加样式或类。

我希望它有所帮助。