Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PHP获取数组数据推送到ajax请求并返回_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 将PHP获取数组数据推送到ajax请求并返回

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循环表,它显示了我数据库中的信息。我想要实现的是在每一行上放置一个通知,比如它有多少新的评论

这是我的while循环代码:

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服务器日志,找出错误所在。