ajax没有响应所有数组数据

时间:2016-09-07 05:51:14

标签: php jquery mysql json ajax

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);
      });
    }
  });
});

2 个答案:

答案 0 :(得分:2)

您必须迭代所有获取的行并将它们放入数组中。 之后,您可以调用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);
}

答案 1 :(得分:1)

使用mysqli_fetch_all()

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