2017-03-01 94 views
0

我得到了一个显示我数据库信息的while循环表。而我想要实现的是在每一行上发出通知,例如具体的票证有多少新评论。将PHP读取数组数据到ajax请求并返回

这里是我的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>"; 
} 

如果你看看与ID noti_Counter股利,这就是我想通知柜台出现。

这里是我的AJAX代码:

$(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,我只是MINIZED它:

$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。

回答

0

你只需要添加到您的jQuery语句的阿贾克斯()功能齐全,填补了结果数据到HTML元素:

$('#noti_Counter').html(data.unseen_notification).css({ opacity: 0 }).animate({ opacity: 1 }, 500); 

这将#noti_counter的内部HTML设置的值在动画之前创建data.unseen_notification。

编辑:我只注意到“数据:{:ticketno ticketno}”在阿贾克斯()调用,您可能需要报价添加到第一个以确保它作为文字文本而不是变量处理值。

我也注意到你没有关闭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_counter对象来填充。最好在页面主体或ajax调用中将所有PHP一起调用,然后使用结果生成HTML。

+0

嗨,谢谢你的回答。但它仍然没有任何回报。当我看到控制台〜check.php?ticketno = S043397 500(内部服务器错误)〜这是错误,我认为它只传递一个值。我在哪里得到了2页的页面。 – TheTruth

+0

我知道我看到一些更多的问题,我正在编辑我的回答 – M31

+0

是的肯定谢谢 – TheTruth

相关问题