Автозаполнение пользовательского интерфейса jQuery — результатов не найдено

У меня есть следующее

<form action="" method="post">
<input type="text" class="auto" name="search" autocomplete="off">
</form>

<script>
$(document).ready(function($){
$('.auto').autocomplete({
source:'connect.php',
minLength:1
});
});
</script>

И connect.php
Я ЗНАЮ, что мне нужно очистить $ term перед тем, как вводить его в свой запрос.

if(isset($_GET['term'])) {
require "db.php";

$con = mysqli_connect("$host","$user","$password","$db");

if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$term = $_GET['term'];
$query = "SELECT `name` FROM `products` WHERE `name` LIKE '%$term%'";
$result = mysqli_query($con, $query);

while ($row = mysqli_fetch_array($result)) {
echo json_encode($row);
}
}

Если бы я напечатал M в поле ввода и использовать инструменты Chrome для проверки ответа, я получаю это.

{«0»: «13-дюймовый MacBook Pro», «name»: «13-дюймовый MacBook Pro»} {«0»: «MacBook
Pro 15-inch «,» name «:» MacBook Pro 15-inch «} {» 0 «:» MacBook Air
13 дюймов «,» name «:» MacBook Air 13 дюймов «} {» 0 «:» MacBook Air
11-дюймовый «,» имя «:» 11-дюймовый MacBook Air «} {» 0 «:» iMac
21,5 дюйма «,» name «:» iMac 21,5 дюйма «} {» 0 «:» iMac 27 дюймов «,» name «:» iMac 27 дюймов «} {» 0 «:» Четырехъядерный процессор Mac Pro «,» name «:» Mac Pro Quad-Core «} {» 0 «:» Mac
Pro 6-Core «,» name «:» Mac Pro 6-Core «}

Однако, по какой-то причине, на странице написано «Результаты не найдены», хотя они есть?

0

Решение

Выходные данные, которые создает ваш php-скрипт, не являются допустимыми json — вы должны обернуть отдельные объекты в массив:

[{"0":"MacBook Pro 13-inch","name":"MacBook Pro 13-inch"}, {"0":"MacBook Pro 15-inch","name":"MacBook Pro 15-inch"}, {"0":"MacBook Air 13-inch","name":"MacBook Air 13-inch"}, {"0":"MacBook Air 11-inch","name":"MacBook Air 11-inch"}, {"0":"iMac 21.5-inch","name":"iMac 21.5-inch"}, {"0":"iMac 27-inch","name":"iMac 27-inch"}, {"0":"Mac Pro Quad-Core","name":"Mac Pro Quad-Core"}, {"0":"Mac Pro 6-Core","name":"Mac Pro 6-Core"}]

Измените ваш PHP-скрипт так:

$result = array();
while ($row = mysqli_fetch_array($result)) {
$result[] = $row;
}

json_encode($result);

В дополнение к этому — ваш вывод должен иметь свойства id, value и label, а не только «0».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]