使用$ .getJSON从PHP文件中检索数据

时间:2015-05-13 14:58:17

标签: javascript php

我正在尝试在照片上设置评论系统。

我理解当数组如下时如何使用$ .getJSON:

get.php:

$var = 5;
echo json_encode(array('var'=>$var));

main.php:

$.getJSON("get.php",function(data){
    number = data.var; // number = 5
});

但我有一件更复杂的事情。

我的评论表包含以下4列: id | photo_id |评论|日期

例如,假设我们尝试使用

从照片中检索评论数据

photo_id == 1

我们不知道可能有多少评论。

在getcomments.php中:

$photoid = 1;

$comment = mysqli_query($conn,"SELECT * FROM comments WHERE photo_id='$photoid'");

while($commentrow = $comment->fetch_assoc()) {
    $comments[] = $commentrow;
}

然后你编码:

echo json_encode($comments);

打印出类似的内容(照片有2条评论):

[{"id":"1","photo_id":"1","comment":"text","date":"23858556"},{"id":"2","photo_id":"1","comment":"text","date":"23858561"}]

如何为comments数组声明变量?

$.getJSON("getcomments.php",function(data){
    // how do I declare variables for the comments array, especially since you don't know how many there might be?
});

此外,我有两个需要在同一个PHP文件中回显的json数组。即echo json_encode(array('img1'=>$img1link))echo json_encode($comments);需要在同一个PHP文件中回显,但它使代码完全停止工作。

3 个答案:

答案 0 :(得分:3)

如果要显示循环数组所需的注释。您可以使用for循环或forEach函数。

$.getJSON("getcomments.php",function(data){
    data.forEach(function(comment) {
        $('div').append('<span>' + comment.comment + '</span>');
    });
});

要显示两个JSON,您需要将它们合并为一个JSON对象。

echo json_encode(array('img' => $img1link, 'comments' => $comments));

答案 1 :(得分:0)

[{"id":"1","photo_id":"1","comment":"text","date":"23858556"},{"id":"2","photo_id":"1","comment":"text","date":"23858561"}]

使用此JSON,data是一个数组,您应该将其作为数组进行管理。您可以使用简单的循环(forwhile ...)或使用forEachmapfilter等新功能方法来遍历它...

请尝试使用此示例:

$.getJSON("getcomments.php",function(data){
    data.forEach(function(item, index, all) {
        console.log(item.comment);
    });
});

答案 2 :(得分:0)

声明一个对象,并将其推送到数组。

var commentsArr = [];

for (var i = 0; i < data.length; i++) {
    var objToPush = {
        id: data.id,
        comment: data.comment,
        date: data.date
    }

    commentsArr.push(objToPush);
}