首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ajax、php和json搜索表单

使用ajax、php和json搜索表单
EN

Stack Overflow用户
提问于 2018-08-18 07:59:48
回答 1查看 143关注 0票数 0

我现在正通过我的学校学习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);
  }

}

?>

只要查询的结果有超过1个属性,不管我怎么做,它都不会显示任何结果,只有当我缩小搜索范围,只找到一个产品时,它才会显示它。

我刚接触javascript,但我非常确定这与我在PHP端的操作方式有关,所以它将每个产品作为单个对象返回,而不是在数组或任何其他对象中,所以当我在javascript端获得数据时,我在循环它时会遇到麻烦。

所以基本上,假设我有这些产品

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

只有当我在搜索字段中至少写了"Banana chiq“时,我才会在javascript端得到一个结果,所以php端只返回一个对象。

为我糟糕的解释道歉:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-18 08:39:32

首先,您应该创建一个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);

}

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51904123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档