php - json_decode 返回 null - laravel
问题描述
我正在使用 ajax 调用从前端发送 json 对象,如下所示:
<button id="btn">click me</button>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$('#btn').click(function () {
$.ajax({
url:"/execute",
type:"POST",
contentType: 'json',
data:{
"test":"hello"
},
success:function (data) {
console.log(data.status);
}
});
});
</script>
我想在 laravel 中解码这个 json 对象,这是我的控制器代码:
public function executeFunction(Request $request){
if($request->header()['content-type'][0] === 'json')
{
Log::info(json_decode($request->getContent(),true));
}
return response()->json(["status"=>"success"]);
}
json_decode 在这里返回 null,可能是什么问题?谢谢。
解决方案
我找到了解决这个问题的方法,诀窍是在前端使用 JSON.stringify(data) 并且 json_decode 可以正常工作。
前端代码:
button id="btn">click me</button>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$('#btn').click(function () {
$x = {
"test":"hello"
};
$.ajax({
url:"/execute",
type:"POST",
contentType: 'application/json',
data:JSON.stringify($x),
success:function (data) {
console.log(data);
}
});
});
</script>
控制器代码:
public function executeFunction(Request $request){
if($request->header()['content-type'][0] === 'application/json')
{
Log::info(json_decode($request->getContent())->test);
}
}
如果您转储内容,这将是结果:
object(stdClass)#423 (1) {
["test"]=>
string(5) "hello"
}
推荐阅读
- html - 字体真棒(快捷方式)?
- javascript - 通过向 Cognito 发送验证码,直接从您的应用程序获取 cognito 电子邮件验证
- python - 如何在 CSV 文件的特定单元格中写入内容?
- github-actions - github 操作在工作流之间共享值
- pandas - 如何在 Pandas 中更新文件
- react-router - 类型上不存在属性“组件”
- c++ - 将带有两个变量的 for 循环分成两个单独的 for 循环(在 C++ 中)
- javascript - 遍历 Googlesheet 并获取与用户列中特定条件匹配的所有行
- r - 如何调整订单输出表
- javascript - 根据 api 重新绘制多行