我正在编写一个PHP脚本,它回显一个表示未读消息数量的数字。
我有以下代码,每隔30秒处理一次PHP。
setInterval(function (){
$.ajax({
url: "php/notifications_counter.php",
cache: false,
success: function(number){
$("#notification_counter").show();
$("#notification_counter_number").text(number);
}
});
},5010);
应将PHP回声插入div中的数字称为“#notification_counter_number”。确实插入了数字。但是由于一些奇怪的原因,加上数字也会在php文件里面的评论得到回应?我无法让它正常工作。
此外,我希望#notification_counter显示何时有回显的数字,但是当没有数字时隐藏。所以我尝试了以下代码:
...success: function(number){
if (number > 0) {
$("#notification_counter").show();
$("#notification_counter_number").text(number);}
else {$("#notification_counter").show();}
}
这也不起作用:( div总是被隐藏,即使PHP输出的数字超过0.希望你们可以提供帮助。
更新:这是我的php文件:
<!--
blabla commenting, so this gets visible as text in DIV as well. Strange...
!-->
<?php
include "config.php";
//Count unread messages from database
$Number_Query = mysqli_query ($mysqli, "SELECT * FROM notifications WHERE Notification_Read='0' ");
$Notification_Count = mysqli_num_rows($Number_Query);
if ($Notification_Count > 0) {
echo "$Notification_Count"; }
//Close connection
mysqli_close($mysqli);
?>
答案 0 :(得分:1)
因此,当您通过ajax获取页面时,它将返回整个正文,而不仅仅是您在浏览器中看到的内容。所以在字符串中返回<!--
html注释。您需要使用php注释完全删除该输出,否则您的number > 0
计算将失败。
如果您无论出于何种原因绝对无法更改PHP输出,您可以通过执行以下操作来删除所有字符的响应:
if (number.replace(/\D/g,'') > 0) {
但这非常糟糕。最好清理你的php文件。
答案 1 :(得分:0)
<!-- -->
是一个HTML注释,输出到浏览器,只需更改为php注释:
<?php
/*
blabla commenting, so this gets visible as text in DIV as well. Strange...
*/
include "config.php";
在进行更改时,输出JSON也是有意义的,这样可以在需要时添加额外数据(例如评论时间,作者等):
$Notification_Count = mysqli_num_rows($Number_Query);
header('Content-Type: application/json');
echo json_encode(array('count'=>$Notification_Count));
//javascript
success: function(data){
if (data.count > 0)...