Anopeng
@Anopeng
Веб-программист, учу фронт и бек

Почему не передаются параметры POST?

Передаю параметры POST, а PHP их не видит, выводит только тестовую строку. Пробовал с GET, все работало как надо.
JS
fetch('test.php', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({ code }) // { code:string }
})

PHP
<?
echo 'Test'; // Тестовая строка, выводится
echo $_POST['code']; // Не выводится


Вот с GET:
JS
fetch( 'test.php?' + new URLSearchParams({ code }) );

PHP
<?
echo $_GET['code']; // Работает
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@TheAndrey7
Потому что переменная $_POST умеет работать только с application/www-x-form-urlencoded и multipart/form-data. Кастомный тип Body как JSON уже надо доставать и парсить ручками.
<?php
$json = json_decode(file_get_contents('php://input'), true);
var_dump($json);

Если всё же хочется через $_POST, вам надо через FormData передавать тело запроса, вместо JSON.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы