Получение PHP
$json = json_decode(file_get_contents('php://input'));
//ну и посмотри что приходит:
file_put_contents(__DIR__ . '/log', json_encode($json), FILE_APPEND);
Мой вариант формирования JSON для отправки JS
let serialize = (f) => { var i, j, q; if (!f || f.nodeName !== "FORM") { return } i = j = void 0; q = {}; i = f.elements.length - 1; while (i >= 0) { if (f.elements[i].name === "") { i = i - 1; continue } switch (f.elements[i].nodeName) { case "INPUT": switch (f.elements[i].type) { case "number": case "date": case "text": case "hidden": case "password": case "button": case "reset": case "submit": q[f.elements[i].name] = f.elements[i].value; break; case "checkbox": case "radio": if (f.elements[i].checked) { q[f.elements[i].name] = f.elements[i].value } break; case "file": break }break; case "TEXTAREA": q[f.elements[i].name] = f.elements[i].value; break; case "SELECT": switch (f.elements[i].type) { case "select-one": q[f.elements[i].name] = f.elements[i].value; break; case "select-multiple": j = f.elements[i].options.length - 1; while (j >= 0) { if (f.elements[i].options[j].selected) { q[f.elements[i].name] = f.elements[i].options[j].value } j = j - 1 } }break; case "BUTTON": switch (f.elements[i].type) { case "reset": case "submit": case "button": q[f.elements[i].name] = f.elements[i].value } }i = i - 1 } return q };
fetch(url, {
method: 'POST',
body: JSON.stringify(serialize(document.forms.form_name)),
credentials: 'same-origin',
cache: "no-cache"
}).then((r)=>{r.json().then((data) => {
//получаем данные
})}, (e)=>{console.log(e)})}
#Если данные с формы form_name меняем на имя формы <form name="имя формы"
JSON.stringify(serialize(document.forms.form_name))
#Если данные просто массив или обьект
JSON.stringify(указываем переменную)