Начинаю знакомиться с 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; Что делаю не так?
Проверять ответ следует в обработчике события 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
Спасибо за помощь, вот код который решил мою проблему
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));
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости