我正在尝试以json格式提交表单输入。将json数据解码为数组后,我无法访问数组。
{
"info": {
"q_title": "hello",
"q_description": "ddd",
"q_visibility": "1",
"start_date": "Thu, 05 Oct 2017 06:11:00 GMT"
}
}
这是我的json数据。我的Laravel控制器如下:
public function store_quiz(Request $request)
{
$data = json_decode($request->getContent(), true);
$input = $arrayName = array(
'title' => $data["info"]["q_title"],
);
CreateQuiz::create($input);
$redirect = '/';
return $redirect;
}
不幸的是$data["info"]["q_title"]
返回NULL。如何访问" q_tittle"我的json ??
答案 0 :(得分:1)
也许$request->getContent()
内容与您的示例不同,因为对我而言,它有效。
尝试检查$request->getContent()
中的内容。
示例:
<?php
$source = '{
"info": {
"q_title": "hello",
"q_description": "ddd",
"q_visibility": "1",
"start_date": "Thu, 05 Oct 2017 06:11:00 GMT"
}
}';
$data = json_decode($source, true);
echo $data['info']['q_title'];
答案 1 :(得分:0)
只需在json_decode
之后访问您的数据,而无需第二个参数。
$data->info->q_title
并使用第二个参数为true,它将您的对象转换为数组。
$data = json_decode($request->getContents(),true) //then use
$data['info']['q_title']
如果您在$request->getContents()
中没有收到任何内容,则问题出在您发送的请求中。
另外,请检查这两个链接,了解如何检索JSON有效负载
答案 2 :(得分:0)
<强>解决方案:强>
我的数据保存在jQuery中的var data
。
发布我用过的数据
$.ajax({ .... data: {data: data} .... });
而不是
$.ajax({ .... data: data .... });
所以我从$request->getContent()
得到了意想不到的价值。
答案 3 :(得分:0)
这是一种更为Laravel风格的方法:
public function store_quiz(Request $request)
{
$input = $arrayName = array(
'title' => $request->input('info.q_title'),
);
CreateQuiz::create($input);
$redirect = '/';
return $redirect;
}
确保您的javascript应用将Content-Type
标头设置为application/json
。 Laravel会为你json_decode()
。
来源:https://www.electron.build/code-signing(检索JSON输入值)