使用ajax,php和json搜索表单

时间:2018-08-17 23:59:48

标签: javascript php arrays json ajax

我目前正在学校里学习javascript,但我完全坚持尝试使搜索表单起作用。

我的问题是我无法获取它来显示sql查询的所有结果。

代码如下:

$(document).ready(function(){
  var searchfield = document.getElementById("searchfield");
  var searchresult = document.getElementById("searchresult");
 $(searchfield).on("keyup", function(){
  var q = this.value;
  console.log(q +"'This value'");
  var str = "";
  var url = "searchscript.php?q="+q;
  $.ajax({
    url:url,
    type:'post',
    dataType: 'json',
    success: function(resultat){
      console.log("resultatet är:" + resultat.ProduktNamn);
     for(var i = 0; i < resultat.ProduktNamn.length; i++) {
      str += resultat.ProduktNamn + "<br>";
     }

      searchresult.innerHTML = str;
   }
  })
 });
});
<?php
$str = $_GET['q'];
if (!empty($str)) {
 $query = "SELECT ProduktNamn FROM Produkter WHERE ProduktNamn LIKE '%$str%'";
 $resultat = mysqli_query($dbconnect, $query);
  while ($row = $resultat->fetch_assoc()) {
    echo json_encode($row);
  }

}

?>

一旦查询结果具有多个属性,无论我怎么做,它都不会显示任何结果,只有当我缩小搜索范围以便仅找到一个产品时才显示它。

我是Java语言的新手,但我可以肯定,这与以下事实有关:我在PHP方面的操作方式使之成为现实,因此它将每个产品作为单个对象返回,而不是在数组或其他任何东西,因此当我将数据返回到javascript端时,无法遍历它。

所以基本上说我有这些产品

“香蕉奇基塔” 香蕉香蕉 “香蕉”

一旦我在搜索字段中至少写入了“ Banana chiq”,我将只在javascript端获得结果,因此php端仅返回1个对象。

抱歉,我的解释很糟糕:/

1 个答案:

答案 0 :(得分:0)

好吧,首先您应该制作一个2D数组,然后将其编码为JSON。当前,您正在将每个记录写为JSON字符串,该字符串适用于单个记录,但不适用于多个记录。查看更正后的PHP代码。

<?php
$str = $_GET['q'];
if (!empty($str)) {
   $query = "SELECT ProduktNamn FROM Produkter WHERE ProduktNamn LIKE '%$str%'";
   $resultat = mysqli_query($dbconnect, $query);
   $rows = array();
   while ($row = $resultat->fetch_assoc()) {
      array_push($rows,$row);

   }
   echo json_encode($rows);

}

?>