我现在正通过我的学校学习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端只返回一个对象。
为我糟糕的解释道歉:/
发布于 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);
}
?>
https://stackoverflow.com/questions/51904123
复制相似问题