dmitriy154
@dmitriy154
Голова, два уха

Как отправлять данные методом POST?

Если я отправляю данные из <form>, то все отлично, ловлю нужные данные с помощью $_POST['data'].
Пытаюсь отправить данные из js с помощью fetch, но не могу понять как их извлечь:

let data = {
	city: "Gorod",
	prim: "Примечание"
}

btn_send.addEventListener('click',async() => {
	//отправляем данные методом POST
	let response = await fetch('web_tp_word.php', {
		method: 'POST',
		headers: {
		  'Content-Type': 'application/json;charset=utf-8'
		},
		body: JSON.stringify(data)
	  });
	  
	  location.href = 'web_tp_word.php';

});


Сам файл php:

// 1-й способ
$str = file_get_contents('php://input') . PHP_EOL;
echo $str; // ПУСТО
//2-й способ
$data = json_decode($_POST['data'], 1);
echo $data; //ПУСТО

Как же их извлечь?
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 2
irishmann
@irishmann
Научись пользоваться дебаггером
1 способ рабочий.
index.php
<html>
    <body>
        <button id="btn_send">send</button>
        <script>
        let data = {
            city: "Gorod",
            prim: "Примечание"
        }

        btn_send.addEventListener('click',async() => {
            console.log('dd');
          //отправляем данные методом POST
          let response = await fetch('web_tp_word.php', {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json;charset=utf-8'
            },
            body: JSON.stringify(data)
            });
            
            let result = await response.json();
            console.log(result);

        });
        </script>
    </body>
</html>

web_tp_word.php
<?php
    $str = file_get_contents('php://input');
    $input_json = json_decode($str, true);
    
    $response = [
        'request' => $input_json,
        'test' => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
        'test 2' => 'bla-bla-bla'
    ];
    
    echo json_encode($response, JSON_UNESCAPED_UNICODE);

Скрин DevTools
6152e6d3a2db7060497195.jpeg
Ответ написан
dmitriy154
@dmitriy154 Автор вопроса
Голова, два уха
разобрался все делается двумя строками кода
$postData = file_get_contents('php://input'); // строка в формате JSON - {"city":"Minsk","prim":"Примечание"}
$data = json_decode($postData, true); //массив данных -  $data['city']; //Minsk
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Depcon Екатеринбург
от 100 000 до 170 000 ₽
ManyChat Москва
от 150 000 ₽
от 210 000 до 250 000 ₽