我正在尝试在照片上设置评论系统。
我理解当数组如下时如何使用$ .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文件中回显,但它使代码完全停止工作。
答案 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
是一个数组,您应该将其作为数组进行管理。您可以使用简单的循环(for
,while
...)或使用forEach
,map
,filter
等新功能方法来遍历它...
请尝试使用此示例:
$.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);
}