使用ajax从数据库获取对象数组

时间:2016-08-04 09:01:31

标签: php jquery ajax

我想从数据库下载评论并在我的页面上显示。当前代码返回语法错误,因为php文件没有返回正确的json文件。

我的PHP代码(没有连接问题所以只取部分)。

if ($result->num_rows > 0){

    while($row = $result->fetch_assoc()) {

        echo json_encode(array(
            "id" => $row["id_com"],
            "nick" => $row["com_nick"],
            "email" => $row["com_email"],
            "text" => $row["com_text"],
            "data" => $row["com_data"],
            "ocena" => $row["ocena"]
        ));
    }

返回值。

{"id":"1","nick":"my_nick","email":"g@go.pl","text":"content!","data":"2016-08-03","rate":"5"}{"id":"4","nick":"ra","email":"hat@gon.ha","text":"Hat","data":"2016-08-03","ocena":"1"} ect...

Ajax请求(我认为问题在于此处)

$.ajax
    ({
        url: "/commdown.php",
        dataType: 'json',
        success: function(data)
        {
              alert(  

                      "id: " + data.id +
                      "\nnick: " + data.nick +
                      "\nemail: " + data.email +
                      "\ntext: " + data.text +
                      "\ndata: " + data.data +
                      "\nocena: " + data.ocena

              );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) 
        { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); 
        }  
    });

我认为问题在于我使用单个ajax请求下载多个对象,而不是单独调用每个注释的请求。

2 个答案:

答案 0 :(得分:0)

使用数组将所有数据附加到它然后回显编码数据,使用ajax中的循环在页面/警告框中显示它

if ($result->num_rows > 0){
    $data = [];
    while($row = $result->fetch_assoc()) {

        $data[] = array(
            "id" => $row["id_com"],
            "nick" => $row["com_nick"],
            "email" => $row["com_email"],
            "text" => $row["com_text"],
            "data" => $row["com_data"],
            "ocena" => $row["ocena"]
        );
    }
header('Content-Type: application/json');
echo json_encode(data);

JS:

$.ajax
    ({
        url: "/commdown.php",
        dataType: 'json',
        success: function(retdata)
        {
          $.each(retdata,function(i,data){
              alert(  

                      "id: " + data.id +
                      "\nnick: " + data.nick +
                      "\nemail: " + data.email +
                      "\ntext: " + data.text +
                      "\ndata: " + data.data +
                      "\nocena: " + data.ocena

              );
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) 
        { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); 
        }  
    });

答案 1 :(得分:0)

得到一个合适的json尝试这个..

$data = array();
while ( $row = $result->fetch_assoc() ){
    $data[] = json_encode($row);
}
echo json_encode($data);

你可以使用。

$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode($data);