Я не знаю, почему это не работает. Возвращается пустым $_POST
,
JS:
const updateRequest = new FormData();
updateRequest.append('updateRequest', 'next-period');
fetch('file.php', {
method: 'POST',
data: updateRequest
})
.then((response) => response.text())
.then((text) => {
console.log(text);
})
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
var_dump(empty($_POST));
}
В файле PHP запросом сервера является POST, но var_dump регистрирует true.
Согласно документация, если вы хотите отправить данные на сервер в теле запроса (как для POST), вы помещаете их в body
вариант. Здесь нет data
опция доступна. Если вы предоставите это методу Fetch, он не ожидает этого и просто проигнорирует это. Возможно, вы перепутали его с синтаксисом для jQuery $ .ajax () (который имеет data
вариант) что ли?
Вам нужно написать:
fetch('file.php', {
method: 'POST',
body: updateRequest //"body" instead of "data"})
Демонстрация (смотрите вкладку сети при запуске скрипта, чтобы увидеть данные, включенные в тело): http://jsfiddle.net/2vx0rp3q/
Изменить данные в теле
var form = new FormData(document.getElementById('login-form'));
fetch("/login", {
method: "POST",
body: form
});
как определено здесь https://developer.mozilla.org/it/docs/Web/API/Fetch_API/Using_Fetch