javascript — PHP POST с использованием API JS Fetch

Я не знаю, почему это не работает. Возвращается пустым $_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.

-1

Решение

Согласно документация, если вы хотите отправить данные на сервер в теле запроса (как для POST), вы помещаете их в body вариант. Здесь нет data опция доступна. Если вы предоставите это методу Fetch, он не ожидает этого и просто проигнорирует это. Возможно, вы перепутали его с синтаксисом для jQuery $ .ajax () (который имеет data вариант) что ли?

Вам нужно написать:

fetch('file.php', {
method: 'POST',
body: updateRequest //"body" instead of "data"})

Демонстрация (смотрите вкладку сети при запуске скрипта, чтобы увидеть данные, включенные в тело): http://jsfiddle.net/2vx0rp3q/

3

Другие решения

Изменить данные в теле

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

-1

По вопросам рекламы [email protected]