Mesuti
@Mesuti

Как в php вернуть простые данные, полученные с помощью JavaScript fetch?

Привет!

Задача - отправить post с помощью fetch, далее php файл этот post обрабатывает и возвращает нужные данные.
Как в php вернуть отдельно ключ и отдельно значение объекта?

Отправляю POST с помощью fetch
document.querySelector('button').addEventListener('click', async () => {
    const data = { username: 'example' };
    const url = "functions.php";

    try {
        const response = await fetch(url, {
            method: 'POST',
            body: JSON.stringify(data),
            headers: {
                'Content-Type': 'application/json'
            }
        });
        const json = await response.json();
        console.log('Успех:', JSON.stringify(json));
    } catch (error) {
        console.error('Ошибка:', error);
    }
});

Безуспешно пробовал в php вернуть отправленные значения
echo json_decode($_REQUEST); 
echo json_decode($_POST);
echo $_POST["username"];
echo json_decode($_POST["username"]);
echo $param->username;


Если вопрос сложный, для теста полный код
index.html

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<button>
    Fetch
</button>

<script>

document.querySelector('button').addEventListener('click', async () => {
    const data = { username: 'example' };
    const url = "functions.php";

    try {
        const response = await fetch(url, {
            method: 'POST',
            //body: JSON.stringify(data),
            body: 'param=' + JSON.stringify(data),
            headers: {
                'Content-Type': 'application/json'
            }
        });
        const json = await response.json();
        //console.log('Успех:', JSON.stringify(json));
        console.log('Успех:', json);
    } catch (error) {
        console.error('Ошибка:', error);
    }
});

</script>
</body>
</html>


functions.php

$param = json_decode($_REQUEST["param"]);
echo $param;
  • Вопрос задан
  • 3213 просмотров
Решения вопроса 1
Mesuti
@Mesuti Автор вопроса
Вариант 1
js
body: 'username=example',
...
const json = await response.json();
console.log('Успех:', json.username);

php
$data = json_encode($_POST);
echo $data;


Вариант 2
js
const data = { username1: 'example1', username2: 'example2' };
body: ('param=' + JSON.stringify(data)),

php
$param = json_decode($_REQUEST["param"]);
echo $param->username1;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
$params = json_decode($_POST, true);
$params["username"];
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы