Отправка POST запроса на сервер

187
16 июня 2018, 23:00

Начинаю знакомиться с PHP и хочу отправить форму без перезагрузки страницы, вот скрипт:

function post(){
    var name = fields[0].value,
        lastname = fields[1].value,
        xhr = new XMLHttpRequest();
        xhr.open('POST', 'setDb.php', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        var gender = radioMan.checked ? "male" : "female";
        xhr.send("name=" + encodeURIComponent(name) +
    "&lastname=" + encodeURIComponent(lastname) + "&gender=" + encodeURIComponent(gender));
    //Проверка ответа от сервера
    if (xhr.readyState == 4) {
            if(xhr.status == 200) {
                alert(xmlhttp.responseText);
            }
        }
}
  • setDb.php php скрипт, который будет записывать данные в БД, сейчас скрип в скрипте содержится инструкция echo, которая должна вывести имя переданное на сервер из формы

    <?php
    echo $_POST["name"];
    ?>

Дело в том, что не могу получить ответ от сервера, xmlhttp.responseText = 0; Что делаю не так?

Answer 1

Проверять ответ следует в обработчике события onreadystatechange:

xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    alert(xhr.responseText);
  }
};

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange

Answer 2

Спасибо за помощь, вот код который решил мою проблему

function post(){
    var name = fields[0].value,
        lastname = fields[1].value,
        gender = radioMan.checked ? "male" : "female",
        xhr = new XMLHttpRequest();
        xhr.open('POST', 'setDb.php', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

        xhr.onreadystatechange = function(){
            //Проверка ответа от сервера
            if (xhr.readyState == 4) {
                    if(xhr.status == 200) {
                        alert(xhr.responseText);
                    }
                }
        };
        xhr.send("name=" + encodeURIComponent(name) +
    "&lastname=" + encodeURIComponent(lastname) + "&gender=" + encodeURIComponent(gender));

}
READ ALSO
составить метод update

составить метод update

хочу с помощью строковых операторов создать sql запрос update есть рабочий пример на insert Данные поступают из $_POST пример $array = $_POST["pet"] = "cat"; где...

193
Как вывести случайный элемент массива?

Как вывести случайный элемент массива?

Как в моем случае вывести случайное число?

220
Виджеты ВК и пользователи из Украины

Виджеты ВК и пользователи из Украины

Столкнулся с такой трудностью: если установлен виджет, например, группы вк, и у пользователя из Украины нет VPN, то страница грузится бесконечно...

191