Javascript 将PHP获取数组数据推送到ajax请求并返回
我得到了一个while循环表,它显示了我数据库中的信息。我想要实现的是在每一行上放置一个通知,比如它有多少新的评论 这是我的while循环代码:Javascript 将PHP获取数组数据推送到ajax请求并返回,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我得到了一个while循环表,它显示了我数据库中的信息。我想要实现的是在每一行上放置一个通知,比如它有多少新的评论 这是我的while循环代码: while ($row = mysql_fetch_array($result)) { $cTicketNo=$row["cTicketNo"]; $vCategory=$row["vCategory"]; $cUsername=$row["cUsername"]; $cPCName=$row["cPCName"];
while ($row = mysql_fetch_array($result)) {
$cTicketNo=$row["cTicketNo"];
$vCategory=$row["vCategory"];
$cUsername=$row["cUsername"];
$cPCName=$row["cPCName"];
$dDateTimeCalled=$row["dDateTimeCalled"];
$vDepartment=$row["vDepartment"];
$cRStatus=$row["cRStatus"];
$nFollowup=$row["nFollowUp"];
$cUStatus=$row['cUStatus'];
$trID='p'.$i;
echo '<form action="Ticket-Assign.php" method="GET">';
echo "<tr id='$trID' onclick=\"highlightClicked('$trID','$maxi')\">";
echo "<td class='center'>$nFollowup</td>";
echo "<td id='ticket' class='center'>$cTicketNo</td>";
echo "<td class='center'>$vCategory</td>";
echo "<td class='center'>$cUsername</td>";
echo "<td class='center'>$cPCName</td>";
echo "<td class='center'>$dDateTimeCalled</td>";
echo "<td class='center'>[ <a id='comment' href='s_ViewAllActions.php?cTicketNo=$cTicketNo' onclick=\"highlightClicked('$trID','$maxi')\">Comment</a> ]</a><div id='noti_Counter'></div></td>";
}
$(document).ready(function(){
load_unseen_notification();
function load_unseen_notification()
{
var ticketno= $("#ticket").text();
$.ajax({
url:"check.php",
method:"GET",
data:{ticketno:ticketno},
dataType:'json',
success:function(data)
{
if(data.unseen_notification > 0)
{
$('#noti_Counter')
.css({ opacity: 0 })
.animate({ opacity: 1 }, 500);
}
}
});
}
setInterval(function(){
load_unseen_notification();
}, 5000);
});
这是check.php,我刚刚缩小了它:
$cTicketNo = santize($_GET["ticketno"]);
$query_1 = "SELECT * FROM comments WHERE comment_status=0 AND cTicketNo='". $cTicketNo ."'";
$result_1 = mysql_query($query_1) or die (mysql_error());
$count = mysql_num_rows($result_1);
$data = ['unseen_notification' => $count];
);
echo json_encode($data);
任何人都可以帮助我,我是AJAX新手。您只需要在AJAX()complete函数中添加jquery语句,将结果数据填充到HTML元素中:
$('#noti_Counter').html(data.unseen_notification).css({ opacity: 0 }).animate({ opacity: 1 }, 500);
这将在设置动画之前,将#noti_计数器的内部HTML设置为data.unseen_通知的值
Edit:我刚刚注意到“data:{ticketno:ticketno}”在您的ajax()调用中,您可能需要在第一个调用中添加引号,以确保它被视为文本而不是变量值
我还注意到您没有关闭HTML中的tr标记,这对于下面描述的解决方案来说是一个问题
您最大的问题是调用ajax函数的方式。这是一个有点奇怪的用法,因为您已经在使用php创建页面内容,您可以跳过ajax,将check.php中的代码包含在页面正文中。因为您有多个#ticket实例,所以需要使用jquery对集合进行迭代,并为每个集合调用ajax处理程序
您将需要执行以下操作:
$(document).ready(function(){
JQuery.fn.load_unseen_notification = function()
{
$.ajax({
url:"check.php",
method:"GET",
data:{'ticketno':$this.text()},
dataType:'json',
success:function(xhr)
{
var data = JSON.parse(xhr.responseText);
if(data.unseen_notification > 0)
{
$(this).parents("tr").find('#noti_Counter').html(data.unseen_notification).css({ opacity: 0 }).animate({ opacity: 1 }, 500);
}
}
});
}
$("#ticket").each(function(){
$(this).load_unseen_notification();
});
});
虽然这相当混乱,但它将遍历#ticket对象以获取每个实例要发送的值,并使用jquery查找要填充的正确的#noti#计数器对象。最好在页面正文或ajax调用中一起调用所有PHP,然后使用结果生成HTML。您好,谢谢您的回答。但它仍然没有归还任何东西。当我查看控制台~check.php?ticketno=s043397500(内部服务器错误)~这就是错误所在,我认为它只传递了一个值。我知道我看到了更多的问题,我正在编辑我的答案。预计它将只传递一个值,并被调用两次。我编写的jquery插件将找到所有的#ticket对象,并运行Ajax函数为每个对象调用check.php。控制台中的500错误意味着check.PHP中出现了一个PHP错误。请查看web服务器日志,找出错误所在。