2017-03-01 92 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

相關問題