Вы не можете генерировать мультипликатор JSON кодирует; который не дает вам никакого действительного JSON, и jQuery проигнорирует его.
while ($row = mysqli_fetch_assoc($sql)) {
$row_array['PNo'] = $row['PNo'];
$row_array['PName'] = $row['PName'];
array_push($return_arr, $row_array);
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
echo json_encode($return_arr);
должно происходить только один раз после того, как mysqli_close
:
array_push($return_arr, $row_array);
} /* Перемешайте назад результаты в виде JSON закодированные массив. */ echo json_encode ($ return_arr);
Кроме того, только в том случае, выводить JSON заголовки Content-Type:
}
/* Toss back results as json encoded array. */
Header("Content-Type: application/json; charset=UTF-8");
die(json_encode($return_arr));
Наконец, вы сообщите об этой ошибке в ваш комментарий:
<b>Warning</b>: include() [<a href='function.include'>function.include</a>]: Failed opening '../_php/search.php' for inclusion (include_path='.:/usr/local/php-5.3.29/share/pear')
Эта ошибка может быть вызвана одной вещи только: вы должны быть , включая PHP сценарий search.php
. То есть в некоторых из ваших PHP скриптов есть
include '../_php/search.php';
Это не должно быть сделано - search.php
должен быть независимым PHP скрипт и он должен возвращать действительный JSON, если вы вызовите его URL из браузера, как это:
http://<yoursite>/_php/search.php?term=%
т.е. он должен возвращать что-то вроде
[["PnoNumber1":"PNameNumber1"],["PnoNumber2":"PNameNumber2"]]
организации файлов (есть более чем один способ сделать это)
Файл HTML может быть там, где вы хотите, скажем, что в /_html/page.html
Этот файл содержит необходимый JS код, который живет в/_js, так и /_js/jquery.min.js скоро.
PHP вызывается кодом Javascript внутри HTML, как описано в другом ответе. Когда вы добавляете URL-адрес «search.php» в свой Javascript, это генерирует новый вызов браузера , который имеет собственный жизненный цикл в AJAX. Этот вызов должен быть способен «жить» сам по себе, поэтому он также должен работать, если вы используете его в адресной строке браузера. В противном случае он не будет работать и в сценарии.
Так, чтобы проверить, что скрипт работает (конечно, вы можете также использовать такие инструменты, как Firebug) вы можете вызвать его из браузера:
http://<yoursite>/_php/search.php?term=%
Скрипт должен затем подключиться к базе данных и выполнить запрос, возвращая действительный JSON в том формате, который ожидает Autocomplete. Поэтому в ответ на вызов выше вы должны увидеть действительный JSON в окне браузера.
Функция .autocomplete корректно связана с $ ('# auto'), и поле ввода действительно имеет идентификатор 'auto'. Таким образом, вызов будет сгенерирован. URI, который вы помещаете в javascript, должен быть действительным со ссылкой на javascript, поэтому, если форма живет в /_html/searchpage.html и скрипт в /_php/search.php, относительный URI будет ../ _php/search.php (конечно, если форма находится в /_html/forms/search.html, вам понадобится ../../_php/search.php и т. д.).
Какая ошибка вы получаете в консоли? –
Предупреждение: include() [function.include]: Неверное открытие '../_php/search.php' для включения (include_path = '.:/Usr/local/php-5.3.29/share/pear') – Nikhil
So у вас неправильный путь '../_ php/search.php' Вы можете проверить, находится ли' search.php' в папке, которая находится над папкой '_php'? –