我目前正在学校里学习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个对象。
抱歉,我的解释很糟糕:/
答案 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);
}
?>