Javascript 为什么我的php数组只返回最近/最近的帖子活动
我创建了一个jquery,它将数据发送到一个php文件,在查询之后,如果在sql中找到任何数据,php将通过json_encode将数据返回到jquery,以便将其追加 Jquery向php文件发送了两种类型的数据: 第1页:页面id 第二:发布ID一个jquery数组将它们发送到php文件 如果我使用print_r$_REQUEST['CID'];出口在php文件上测试他从jquery获得的内容,返回并显示所有post ID 但如果我在某个帖子上回复,那是我最近回复的唯一回复 这意味着,如果我有3个帖子,比如:post-1st,post-2nd,post-3rd;我的php只返回第三次之后的活动 我希望我的脚本在sql提交后更新任何回复 mywall.phpJavascript 为什么我的php数组只返回最近/最近的帖子活动,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我创建了一个jquery,它将数据发送到一个php文件,在查询之后,如果在sql中找到任何数据,php将通过json_encode将数据返回到jquery,以便将其追加 Jquery向php文件发送了两种类型的数据: 第1页:页面id 第二:发布ID一个jquery数组将它们发送到php文件 如果我使用print_r$_REQUEST['CID'];出口在php文件上测试他从jquery获得的内容,返回并显示所有post ID 但如果我在某个帖子上回复,那是我最近回复的唯一回复 这意味着,如果我
// id is dynamic
<div class="case" data-post-id="111"></div>
<div class="case" data-post-id="222"></div>
<div class="case" data-post-id="333"></div>
//Check for any update after 15 second interval by post id.
<script type="text/javascript" charset="utf-8">
var CID = [];
$('div[data-post-id]').each(function(i){
CID[i] = $(this).data('post-id');
});
function addrep(type, msg){
CID.forEach(function(id){
$("#newreply"+id).append("<div class='"+ type +""+ msg.id +"'><ul>"+ msg.detail +"</ul></div>");
});
}
var tutid = '<?php echo $tutid; ?>';
function waitForRep(){
$.ajax({
type: "GET",
url: "/server.php",
cache: false,
data: {
tutid : tutid,
CID : CID
},
timeout:15000,
success: function(data){
addrep("postreply", data);
setTimeout(
waitForRep,
15000
);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
setTimeout(
waitForRep,
15000);
}
});
}
$(document).ready(function(){
waitForRep();
});
</script>
尝试如下方式声明CID数组:
var CID = new Array();
看起来您正在循环通过CID并对每个CID运行SQL查询,但是您只在循环之外检索一次结果。如果运行,则只能获得最后一个查询的结果
$rows = mysqli_fetch_assoc($res);
在CIDs foreach循环之外
@科威特石油公司:
不幸的是,它不会像移动闭合循环括号那样简单。如果试图在一个AJAX调用中检索多个数据集,则需要在AJAX的成功回调或addrep函数中处理多个数据集。这里有一种方法,但根据您最终要做的事情,您可以使用多种不同的方法:
while (true) {
if($_REQUEST['tutid'] && $_REQUEST['CID']){
$data = array();
foreach($_REQUEST['CID'] as $key => $value){
date_default_timezone_set('Asia/Dhaka');
$datetime = date('Y-m-d H:i:s', strtotime('-15 second'));
$res = mysqli_query($dbh,"
SELECT *
FROM comments_reply
WHERE post_id =".$value."
AND qazi_id=".$_REQUEST['tutid']."
AND date >= '$datetime'
ORDER BY id DESC LIMIT 1
") or die(mysqli_error($dbh));
$row = mysqli_fetch_assoc($res)
$data[] = array_map('utf8_encode', $row);
} // array close
//$rows = mysqli_fetch_assoc($res);
//$row[] = array_map('utf8_encode', $rows);
//$data = array();
//$data['id'] = $rows['id'];
//$data['qazi_id'] = $rows['qazi_id'];
//ect all
// do something and echo $data['detail'] = $detail;
if (!empty($data)) {
echo json_encode($data);
flush();
exit(0);
}
} // request close
sleep(5);
} // while close
然后在Javascript中:
...
success: function(data){
for (var i=0, len=data.length; i<len; i++) {
addrep("postreply", data[i]);
}
setTimeout(waitForRep, 15000);
},
...
但这只是一个例子。我真的不知道您的数据集是什么样子,也不知道您希望数据如何传递和使用。这只是一个希望能让你走上正确方向的想法。我为什么要这样做。你认为问题出在哪里?如果我在`}//request close`之前替换`}//array close`它现在可以用于第1篇文章。困惑的非常感谢。请再来点什么?
...
success: function(data){
for (var i=0, len=data.length; i<len; i++) {
addrep("postreply", data[i]);
}
setTimeout(waitForRep, 15000);
},
...