使用javascript

时间:2015-06-29 08:30:25

标签: javascript php ajax mysqli

我正在尝试获取不在另一个表中的行数并使用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根本不返回相应的数字。错误随着这条消息的出现而不断增长。

enter image description here

1 个答案:

答案 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);