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 控制器