带有while循环问题的Ajax和PHP

时间:2016-02-05 08:14:10

标签: php jquery ajax

我有一个需要返回一些值的ajax,但是如果我使用while()从我的db中获取所有结果,则返回“无”。我在哪里弄错了?

我的Ajax脚本发布在下面:

<script type="text/javascript" charset="utf-8">
  function addmsg(type, msg) {
    var obj = jQuery.parseJSON(msg);
    // Your count variable
    var count = obj.count;
    // Your not variable
    var not = obj.not;
    $('#msg_count').html(count);
    $('#notification').html(not);

  }

  function waitForMsg() {
    $.ajax({
      type: "GET",
      url: "notification/select.php",
      cache: false,
      timeout: 50000,

      success: function(data) {
        addmsg("new", data);
        setTimeout(
          waitForMsg,
          1000
        );
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        addmsg("error", textStatus + " (" + errorThrown + ")");
        setTimeout(
          waitForMsg,
          15000);
      }
    });
  };

  $(document).ready(function() {

    waitForMsg();

  });
</script>

我的PHP脚本发布在下面:

 $result = mysqli_query($con, "SELECT * from notification where tousername='$tousername' and isread = 0");

 while ($row = mysqli_fetch_array($result)) {
     $count = $result - > num_rows;
     $not = $row['notification_msg'];
     $res = [];
     $res['count'] = $count;
     $res['not'] = $not;
 }
 echo json_encode($res);

3 个答案:

答案 0 :(得分:4)

您在循环中覆盖结果变量:

while (...) {
  ...
  $res=[];
  ...
}

您可能需要以下内容:

$res['count'] = $result->num_rows;
while($row = mysqli_fetch_array($result)) {
  $res[]['not'] = $row['notification_msg'];
}
echo json_encode($res);

答案 1 :(得分:0)

使用相同的索引覆盖您的值。你可以写这个。

while($row = mysqli_fetch_array($result)) {
$count = $result->num_rows;
$not=$row['notification_msg'];
$res=[];
$res['count'][] = $count;
$res['not'][] = $not; 
}

Or

while($row = mysqli_fetch_array($result)) {
$count = $result->num_rows;
$not=$row['notification_msg'];
$res=[];
$res[]['count'] = $count;
$res[]['not'] = $not; 
}

echo json_encode($res);

模具();

编写js addmsg()函数。

function addmsg(type, msg) {
    var obj = jQuery.parseJSON(msg);
    // Your count variable
    for(prop in obj){
      var count = obj[prop][count];
      var not = obj[prop][not];
       $('#msg_count').html(count);
       $('#notification').html(not);
    }
  }

答案 2 :(得分:-1)

重写你的剧本

function waitForMsg(){
$.get("notification/select.php",function(callback){
console.log(callback); // here is your data in callback variabel you can in in console log
})
}

使用您的php脚本重复此代码。

 $result = mysqli_query($con, "SELECT * from notification where tousername='$tousername' and isread = 0");

       $res['count'] = $result->num_rows;
    while($row = mysqli_fetch_array($result)) {
      $res[]['not'] = $row['notification_msg'];
    }
    echo json_encode($res);