Здравствуйте. В сотый раз проверяю код и не могу понять. Почему не работает FormData.
При правильной работе в console.log() и Network должен появляться объект с данными из формы.
А его нет. Думаю что по этой же причине не приходят данные в phpMyAdmin. Для работы я использую Open Server. Если перейти по ссылки, то можно увидеть всё своими глазами.
<form action="#" id="form_test" class="test_form">
<input id="name_form" class="input_test_form" name="name" type="name" required
placeholder="Ваше имя" value="">
<input id="phone_form" class="input_test_form" name="phone" type="tel" required
placeholder="Номер телефона" value="">
<button type="submit" class="test_button"> Отправить</button>
</form>
const formTest = document.getElementById('form_test'),
InputTestFor = document.querySelectorAll('.input_test_form');
function sendForm(f) {
f.addEventListener('submit', (event) => {
event.preventDefault();
let dataForm = new FormData(f);
function postData(d) {
return new Promise((resolve, reject) => {
let request = new XMLHttpRequest();
request.open('POST', '/connection.php');
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
request.onreadystatechange = function () {
if (request.readyState < 4) {
resolve();
} else if (request.readyState === 4) {
if (request.status == 200 && request.status < 300) {
resolve();
} else { reject(); }
}
};
request.send(d);
console.log(dataForm);
});
}
function clearInput() {
for (let i = 0; i < InputTestFor.length; i++) {
InputTestFor[i].value = '';
}
}
postData(dataForm)
.then(() => { console.log('загрузка');})
.then(() => { console.log('отправлено'); })
.catch(() => { console.log('ошибка');})
.then(clearInput);
});
}
sendForm(formTest);
<?php
header("Access-Control-Allow-Origin: *");
$phone = $_POST["phone"];
$host = 'localhost'; // адрес сервера
$database = 'yoga_tours'; // имя базы данных
$user = 'root'; // имя пользователя
$password = ''; // пароль
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database)
or die("Ошибка " . mysqli_error($link));
$sql = "INSERT INTO phones (id, phone) VALUES (NULL, '$phone')";
$result = mysqli_query($link, $sql) or die("Ошибка " . mysqli_error($link));
if($result)
{
echo "Выполнение запроса прошло";
echo $_POST['phone'];
}
// закрываем подключение
mysqli_close($link);
?>