Laravel 6 Получить информацию из POST JSON - PullRequest
2 голосов
/ 10 апреля 2020

Я пытаюсь получить JSON информацию из запроса POST. Мой запрос POST:

var money = document.getElementById("code").value;
const Http = new XMLHttpRequest();
const url='/paypal/';
Http.open("POST", url);
Http.setRequestHeader("Content-Type", "application/json");
Http.send(JSON.stringify({
    value: money
}));

И контроллер:

public function paypal(Request $r) {
$postInput = file_get_contents('php://input');
$data = json_decode($postInput, true);
$response = array('value' => $data);
return Response::json($response);
}

, но единственный результат, который я получаю:

{"value":null}

Любая идея, где это моя проблема?

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Для laravel мы можем получить POST JSON более простым способом.

use Illuminate\Http\Request;


public function test(Request $request) {
    $inputData = $request->json()->all();
}
0 голосов
/ 10 апреля 2020

Спасибо, ребята, за вашу помощь. Я исправил проблему, опубликовав все через GET-запрос.

0 голосов
/ 10 апреля 2020

При использовании запроса POST не забудьте установить токен csrf в заголовках

добавить метатег <meta name="csrf-token" content="{{ csrf_token() }}">

let token = document.head.querySelector('meta[name="csrf-token"]')          
var money = document.getElementById("code").value;
const Http = new XMLHttpRequest();
const url = '/paypal';
Http.open("POST", url);
Http.setRequestHeader("Content-Type", "application/json");
Http.setRequestHeader('X-CSRF-TOKEN', token.content);
Http.send(JSON.stringify({value: money}));

Чтобы извлечь полезную нагрузку JSON из вашего контроллера, используйте:

$data = json_decode($request->getContent(), true);
return response()->json($data);

и убедитесь, что переменные деньги имеют правильное значение

...