Передача из формы 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 не записываются.


Ответы (0 шт):