GET-запрос работает:
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.querySelector('.response').innerHTML = this.responseText;
}
}
xhr.open("GET", "search.php?q="+val, true);
xhr.send();
PHP (GET):
header("Content-type: text/plain; charset=windows-1251");
if(ISSET($_GET)) {
$val = $_GET['q'];
echo $val;
} else {
echo 'Not GET variables';
}
POST:
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.querySelector('.response').innerHTML = this.responseText;
}
}
xhr.open("POST", "search.php", true);
xhr.send(val);
PHP:
header("Content-type: text/plain; charset=windows-1251");
if(ISSET($_POST)) {
$val = $_POST['val'];
echo $val;
} else {
echo 'Not POST variables';
}
JS полный:
var val;
var inp = document.querySelector("#query-input");
inp.onkeyup = function () {
val = inp.value;
if (val.length != 0) {
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.querySelector('.response').innerHTML = this.responseText;
}
}
xhr.open("POST", "search.php", true);
xhr.send(val);
}
}
Не работает POST-запрос. Нет вовсе никакого ответа. Т.е. запрос-то есть, но сервер не отвечает, хотя переменная val определена. Как правильно сделать запрос?
Первое. Используйте empty()
вместо isset()
. isset()
проверяет существование переменной (переменные $_GET
и $_POST
существуют всегда), а empty()
- существует ли переменная и пуста ли она (там много нюансов, уточните их в документации). У вас в PHP-коде конструкция else
никогда не сработает.
Второе. В вашем примере с POST-запросом на JavaScript переменная val
содержит в себе строку в неправильном формате. Чтобы PHP смог воспользоваться ею, эта переменная должна быть строкой, имеющей формат foo=bar
(foo
- имя поля POST-запроса, bar
- значение поля). То есть в вашем случае переменная val
должна быть строкой val=example
, чтобы к ней можно было обратиться в PHP как к $_POST['val']
. То есть четвертую строку последнего вашего блока кода надо заменить на это:
val = 'val=' + encodeURIComponent(inp.value);
Советую вам ознакомиться со статьёй про XHR, где подробно объясняется этот момент.
Третье. В PHP используйте функции в нижнем регистре. Не ISSET()
, а isset()
.
Четвертое. Включите отображение ошибок в PHP. Пропишите это в начале самого первого вызываемого файла:
error_reporting(E_ALL);
ini_set('display_errors', 1);
Из-за того, что у вас PHP не мог найти переменную $_POST['val']
, он отбрасывал ошибку и прекращал работу, из-за чего ваш скрипт не выводил вам никакой текст.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как можно с помощью jQuery удалить все тэги внутри контейнера, кроме одного указанного? Например, как можно удалить из тэга с классомcontainer всё,...
Собственно вопрос: отправляю данные, приходит пустой ответСмотрю в панели хрома данные оправлены
Почему не срабатывает? И можно ли таким способом добиться такого же эффекта http://lukasz-developercom/codecanyon/menu1/index
Как лучше всего сделать получение информации из перемонной который мы получаем допустим из формы на сайте? Допустим мы спрашиваем у пользоватя:...