Когда я пытаюсь реализовать автозаполнение с помощью кода ниже:
$('#keyword').autocomplete({
source : '/Dev/pages/search.php',
minLength : 3,
type : 'POST',
select: function( event, ui )
{
$(this).data("autocomplete").menu.element.addClass("yellow");
}
})
.data( "ui-autocomplete" )._renderItem = function( ul, item )
{
console.log(item);
return $( "<li>" )
.append( "<a>" + add3Dots(item.name,20) + "</a>" )
.appendTo( ul );
};
if (isset($_POST["term"])){
$term = trim($_GET['term']);
$parts = explode(' ', $term);
$p = count($parts);
$a_json = array();
$a_json_row = array();
$search = connexion::bdd_test();
$requete = "SELECT name from BDD_TEST.companies";
for($i = 0; $i < $p; $i++) {
$requete .= ' WHERE name LIKE ' . "'%" . $conn->real_escape_string($parts[$i]) . "%'";
}
$result = $search->query($requete);
while($donnees = $result->fetch(PDO::FETCH_ASSOC)) {
$a_json_row["name"] = $data['name'];
array_push($a_json, $a_json_row);
}
}
else
{
$a_json['call']=false;
$a_json['message']="Problem to collect word.";
}
$json = json_encode($a_json);
print_r($json);
Когда я проверяю, если условие не выполнено, и я получаю сообщение непосредственно от другого «Проблема собрать слово». Это означает, что $ _POST [«term»] не определено.
Как я могу получить входное значение?
Чтобы убедиться, что значения были отправлены, вы можете увидеть, какие заголовки браузер отправил на веб-сервер с помощью PHP для тестирования.
Это возможно с помощью функции apache_request_headers (), но она работает только в том случае, если PHP запускается на Apache как модуль.
Если PHP работает на Apache как модуль, то заголовки, отправляемые браузером, могут быть получены с помощью функции apache_request_headers (). В следующем примере кода для вывода значения из этого вызова функции используется print_r:
print_r(apache_request_headers());
Вывод из вышеперечисленного с использованием примера запроса от Google Chrome будет выводить что-то похожее на следующее:
Array
(
[Host] => www.testing.local
[Connection] => keep-alive
[User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0
[Cache-Control] => max-age=0
[Accept] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[Accept-Encoding] => gzip,deflate,sdch
[Accept-Language] => en-US,en;q=0.8
[Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
)
Если PHP не запускается как модуль на Apache, заголовки браузера должны храниться в $Массив SERVER, ключом которого является имя заголовка запроса, преобразованное в верхний регистр, переносы заменены на подчеркивания и с префиксом HTTP
Тот же запрос, приведенный выше, показывает соответствующие строки из $ _SERVER:
[HTTP_HOST] => www.testing.local
[HTTP_CONNECTION] => keep-alive
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_ACCEPT] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
Альтернативный метод — создать нашу собственную функцию, если функция apache_request_headers () не существует, которая извлекает только значения из $ _SERVER и преобразует имена ключей в тот же стиль, что и apache_request_headers (). Это работает так:
if(!function_exists('apache_request_headers')) {
function apache_request_headers() {
$headers = array();
foreach($_SERVER as $key => $value) {
if(substr($key, 0, 5) == 'HTTP_') {
$headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
}
}
return $headers;
}
}
Новая функция объявляется только в том случае, если функция с таким именем еще не существует. Конечным результатом является то, что независимо от того, существует ли внутренняя функция PHP, вы сможете вызывать функцию с этим именем в своем коде.
Цикл сделан хотя $Массив SERVER и любой, чей ключ начинается с HTTP добавляется в массив, а ключ транслируется через серию вызовов функций в том же формате, который возвращается функцией apache_request_headers ().
В Chrome есть вкладка «Сеть» с несколькими элементами, и когда я нажимаю на них, я вижу заголовки справа на вкладке.
Нажмите F12 на окнах или ⌥⌘I на Mac, чтобы вызвать инструменты разработчика Chrome.
Вы можете определить, какой тип запроса использовался (GET, POST, PUT или DELETE) в PHP, используя
$_SERVER['REQUEST_METHOD']
Для более подробной информации смотрите документация для переменной $ _SERVER.
Или вы можете получить значения, используя $ _REQUEST [‘you_variable’].
Примечание. $ _REQUEST — это переменная, отличная от $ _GET и $ _POST, в PHP она обрабатывается как таковая: изменение элементов $ _GET или $ _POST во время выполнения не повлияет на элементы в $ _REQUEST и наоборот.
Других решений пока нет …