Laravel 6 从 POST JSON 获取信息

Posted

技术标签:

【中文标题】Laravel 6 从 POST JSON 获取信息【英文标题】:Laravel 6 Get information from POST JSON 【发布时间】:2020-07-22 15:08:39 【问题描述】:

我正在尝试从 POST 请求中获取 JSON 信息。我的 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

知道我的问题在哪里吗?

【问题讨论】:

如果你在 var money 之后做console.log(money),你会得到null 还是你想要的值? 我得到了我想要的价值。 您能否检查一下您的 DevTools on Network 选项卡,看看是否根据需要以 JSON 格式发送负载? 【参考方案1】:

谢谢你们的帮助。我通过 GET 请求发布所有内容来解决我的问题。

【讨论】:

【参考方案2】:

对于 laravel,我们可以更简单的获取 POST JSON。

use Illuminate\Http\Request;


public function test(Request $request) 
    $inputData = $request->json()->all();

【讨论】:

【参考方案3】:

使用 POST 请求时不要忘记在 headers 中设置 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);

并确保可变货币具有正确的价值

【讨论】:

好的,我现在正在发送 CSRF-Token 并尝试用您的方式检索 JSON,但再次没有成功,我只收到

以上是关于Laravel 6 从 POST JSON 获取信息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel API 身份验证(Passport),从 post application/json 获取用户 ID

如何使用 JSON 对象中的 POST 方法在 Laravel 中获取数据?

如何从外部 API 获取 $_POST 数据 - LARAVEL

通过 angular http post 将 json 数据发送到 laravel 控制器

从 Laravel 4.2 升级到 5.0 后获取 POST 的路由未定义错误

Vuejs Axios POST 请求从 Laravel 后端获取 HTTP422 错误