Как получить значение в php из js запроса?
Запрос js, должен написать в консоли браузера результат, а именно '222':
const res = await fetch('php/test.php', {
method:'POST',
body: JSON.stringify({'data': '222'})
})
const json = await res.json()
console.log(json)
php файл:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$a = json_decode($_POST['data']);
echo json_encode(['test'=>$a]);
}
В результате приходит это:
{test: null}
При этом запрос проходит в проверку, но содержимое - '222' не вытягивается. Как правильно сделать нужно?
Ответы (2 шт):
Автор решения: Гончаров Александр
→ Ссылка
Вы из JS отправляете просто тело запроса, это называется raw-данные. Их можно так получить.
var_dump( json_decode(file_get_contents("php://input"), true) );
Но удобнее, посылать запрос отдельными переменными:
jQuery.ajax({
url:'/php/test.php',
method:'POST',
data: {data: '222', es4o: '333'}
})
Тогда на стороне сервера вы можете прочитать эти данные из $_POST.
Автор решения: Виктор
→ Ссылка
Как-то так должно быть:
const res = await fetch('php/test.php', {
method:'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({'data': '222'})
})
const json = await res.json()
console.log(json)
<?php
if( $_SERVER["CONTENT_TYPE"] == 'application/json') {
$postData = file_get_contents('php://input');
$data = json_decode($postData, true);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);