Передача из формы JSON в PHP-обработчик для записи (без jQ)
В чем ошибка Есть файл index.php
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>Карточка товара</h2>
<form action="" id='formProduct'>
<table>
<tr><td>Наименование товара</td><td><input type="text" name="nameProduct" id="nameProduct"></td></tr>
<tr><td>Категория товара</td><td><input type="text" name="catProduct" id="catProduct"></td></tr>
<tr><td>Количество товара</td><td><input type="number" name="qntyProduct" id="qntyProduct"></td></tr>
<tr><td>Цена</td><td><input type="number" name="priceProduct" id="priceProduct"></td></tr>
<tr><td></td><td><button type="submit" id="btnProductForm">Отправить</button></td></tr>
</table>
</form>
<p id="statusMessage"></p>
<script src="script/script.js"></script>
</body>
</html>
Он имеет просто форму
Скрипт обработчик на JS script.js
let formProduct = document.getElementById('formProduct');
formProduct.addEventListener('submit', function(event){
event.preventDefault();
let nameProduct = document.getElementById('nameProduct'),
catProduct = document.getElementById('catProduct'),
qntyProduct = document.getElementById('qntyProduct'),
priceProduct = document.getElementById('priceProduct');
let message = {
loading: "Загрузка..",
success: "Данные сохранены",
failure: "Произошла ошибка"
};
let statusMessage = document.getElementById('statusMessage');
let request = new XMLHttpRequest();
request.open('POST', 'addtodb.php');
// request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
let formData = new FormData(formProduct);
let sendObj = {};
formData.forEach(function(value, key){
sendObj[key] = value;
});
// let json = JSON.stringify(sendObj);
// request.send(formData);
request.send('param=' + JSON.stringify(sendObj));
request.addEventListener('readystatechange', function(){
if(request.readyState < 4){
statusMessage.innerHTML = message.loading;
}
else if (request.readyState === 4 && request.status == 200){
statusMessage.innerHTML = message.success;
}
else {
statusMessage.innerHTML = message.failure;
}
});
nameProduct.value = '';
catProduct.value = '';
qntyProduct.value = '';
priceProduct.value = '';
});
В нем мы получаем данные из формы, собираем JSON и отправляем в файл addtodb.php
файл addtodb.php
<?php
$fd = fopen("hello.txt", 'w') or die("не удалось создать файл");
$param = json_decode($_REQUEST['param']);
fwrite($fd, $param->nameProduct);
fwrite($fd, $param->catProduct);
fwrite($fd, $param->qntyProduct);
fwrite($fd, $param->priceProduct);
fclose($fd);
?>
Имитируем запись в БД. Записываем данные в текстовый документ. Все это творение не работает. При отправке формы, браузер показывает, в консоле (network), что данные отправлены - вернулся статус 200. Была сформирована JSON-строка, например: param={"nameProduct":"Машинка","catProduct":"Игрушка","qntyProduct":"12","priceProduct":"456"}
Но в файл данные, через php не записываются.