我正在尝试获取不在另一个表中的行数并使用javascript显示它们。
首先,在主页面中,它将列出inboxtb
表中的收件箱名称。然后我有一个脚本应该将值(inboxid
)传递给另一个文件,并将结果的数量返回到主文件的相应行中。
我将首先获取所有收件箱行(主页):
while($stmt->fetch()){
echo '<li><a href="#" data-artid="'.$inboxid.'" id="loadmessage">'.$name.'</a> <span id="loadnumber"></span></li>';
}
然后我的剧本:
$(function(){
$('.loadmessage').ready(function(){
var elem = $(this);
var dataString = "inboxid="+elem.attr('data-artid');
var $parent = $(this).closest('loadmessage');
setInterval(function() {
$.ajax({
type: "GET",
url: "noofres.php",
data: dataString,
success: function(data) {
var $span = $parent.find('.loadnumber'); /* FIND THE CORRESPONDING SPAN */
$span.append(data); /* LOAD THE DATA INSIDE THE SPAN */
}
});
});
return false;
});
});
我的noofres.php:
if($stmt = $con->prepare("SELECT a.messageid FROM messagetb a LEFT JOIN readtb b ON a.messageid = b.messageid WHERE a.inboxid = ? AND b.readid IS NULL")){
$stmt->bind_param("i",$_GET["inboxid"]);
$stmt->execute();
$stmt->store_result();
$noofunreadmessages = $stmt->num_rows;
$stmt->close();
} /* END OF SECOND PREPARED STATEMENT */
echo '<span class="badges">'.$noofunreadmessages.'</span>';
但它没有返回数字,它应该在哪里。我究竟做错了什么?或者更好的脚本来做到这一点?
非常粗略的示例输出:
Person1 Message - 3
Person2 Message - 1
Person3 Message - 10
但我目前的输出是:
Person1 Message
Person2 Message
Person3 Message
Number根本不返回相应的数字。错误随着这条消息的出现而不断增长。
答案 0 :(得分:1)
您的代码在逻辑方面不正确 您正在执行AJAX 一次并接收值一次 然后,您使用相同的一个值更新元素的HTML 多次。
$.ajax({}, {
success: function(data) {
setInterval(function() {
$('#loadunreadmessages').html(data);
}, 1000);
}
});
为了每次获得新的价值,您需要更改它以便多次执行AJAX ,并且每次更新值一次。这听起来合乎逻辑。
setInterval(function() {
$.ajax({}, {
success: function(data) {
$('#loadunreadmessages').html(data);
}
});
}, 1000);
在你的情况下是:
setInterval(function() { /* EVERY SECOND, IT EXECUTES NEW REQUEST TO GET FRESH VALUES */
$.ajax({
type: "GET",
url: "../fetch/noofres.php", /* THIS IS WHERE THE NUMBER OF UNREAD MESSAGES SHOULD COME FROM */
data: dataString,
success: function(data) {
$('#loadunreadmessages').html(data); /* LOAD THE NUMBER TO THIS SPAN WITH THE ID OF loadunreadmessages */
}
}) ;
}, 1000);