【问题标题】:ajax not responding with all array dataajax 没有响应所有数组数据
【发布时间】:2017-01-14 16:21:39
【问题描述】:

ajax 返回数组的 1 个元素(来自 mysql 数据库的数据)而不是所有行,请帮助:

php代码:

<?php
header("Content-type:application/json");
$srchString = trim($_POST['q']);
$sql = mysqli_query($connect,"SELECT * FROM dbname.tblname 
                       WHERE fieldname LIKE '%$srchString%' LIMIT 7");
confirmQuery($sql);
if(mysqli_num_rows($sql)>=1){
      $mem = mysqli_fetch_array($sql,MYSQLI_ASSOC);
      echo json_encode($mem);
}
?>

js:

$("#q").on("keyup",function(){
  var q = $(this).val();

  $.ajax({
    type: "POST",
    dataType:"json",
    url:"process.php",
    cache:false,
    data:"q="+ q,
    success:function(data){
      $.each( data, function( key, value ) {
        console.log(value.tel);
      });
    }
  });
});

【问题讨论】:

  • $mem = array(); if(mysqli_num_rows($sql)&gt;=1){ while ($row = mysqli_fetch_assoc($sql)){ $mem[] = $row; } } echo json_encode($mem);

标签: php jquery mysql json ajax


【解决方案1】:

您必须遍历所有获取的行并将它们放入一个数组中。 之后您就可以调用json_encode 来获取JSON 数组。

请更换

if(mysqli_num_rows($sql)>=1){
      $mem = mysqli_fetch_array($sql,MYSQLI_ASSOC);
      echo json_encode($mem);
}

if(mysqli_num_rows($sql)>=1) {
    $rows = array();      
    while($row = mysqli_fetch_array($sql,MYSQLI_ASSOC)) {
        $rows[] = $row;
    }
    echo json_encode($rows);
}

【讨论】:

    【解决方案2】:

    使用mysqli_fetch_all()

    if(mysqli_num_rows($sql)>=1){
          $mem = mysqli_fetch_all($sql,MYSQLI_ASSOC);
          echo json_encode($mem);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多