我想在具有自动完成功能的下拉列表中显示一些多个值
$(document).ready(function () {
$('#Client-ville_id').typeahead({
source: function (query, result) {
$.ajax({
url: "list_ville.php",
data: 'query=' + query,
dataType: "json",
type: "POST",
success: function (data) {
result($.map(data, function (item) {
return {
name: item.name,
cp:item.departement_code
}
}));
}
});
}
});
});
$sql = $conn->prepare("SELECT * FROM ville WHERE name LIKE ?");
$sql->bind_param("s",$search_param);
$sql->execute();
$result = $sql->get_result();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$countryResult[] = $row["name"];
$countryResult[] = $row["departement_code"];
}
echo json_encode($countryResult);
}
$conn->close();
但是我得到一个错误
未捕获的TypeError:无法读取(index):531处的null属性“名称”
答案 0 :(得分:0)
问题是,您需要使用php中的字符串创建数组
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$countryResult[] = array(
"name" => $row["name"],
"departement_code" => $row["departement_code"]
);
}
echo json_encode($countryResult);
}
或者只是:
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$countryResult[] = $row;
}
echo json_encode($countryResult);
}
有一个函数可以在一个函数调用中获取所有数据,这是一个用于mysqli的函数:mysqli_result::fetch_all。
答案 1 :(得分:0)
问题在于您创建的是非关联数组,但将其作为关联数组。
while($row = $result->fetch_assoc()) {
$countryResult[] = $row["name"];
$countryResult[] = $row["departement_code"];
}
在此循环$countryResult
数组之后,需要这样的内容
array(6) {
[0] => "name1"
[1] => "departement_code1"
[2] => "name2"
[3] => "departement_code2"
[4] => "name3"
[5] => "departement_code3"
}
您应该更改while
循环:
while($row = $result->fetch_assoc()) {
$countryResult[] = $row;
}
答案 2 :(得分:-1)
在您的sql文件中
$sql = $conn->prepare("SELECT * FROM ville WHERE name LIKE ?");
$sql->bind_param("s",$search_param);
$sql->execute();
$result = $sql->get_result();
if ($result->num_rows > 0) {
$i = 0;
while($row = $result->fetch_assoc()) {
$countryResult[$i]['name'] = $row["name"];
$countryResult[$i]['departement_code'] = $row["departement_code"];
$i++;
}
echo json_encode($countryResult);
}
$conn->close();