【问题标题】:Search form using ajax, php and json使用 ajax、php 和 json 搜索表单
【发布时间】:2018-08-17 23:59:47
【问题描述】:

我目前正在通过我的学校学习 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 端只返回 1 个对象。

对不起,我糟糕的解释:/

【问题讨论】:

  • 另一个例子:我去 searchscript.php?q=ba 它返回: {"ProduktNamn":"Banan Chiquita"}{"ProduktNamn":"Banan Lokal"} 这是所有产品里面有“ba”

标签: javascript php arrays json ajax


【解决方案1】:

嗯,首先您应该创建一个二维数组,然后将其编码为 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);

}

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多