我是一个Laravel新手,我正在将一个php / jquery应用程序转换为Laravel.原始代码使用带有ajax POST的JSON数组,检索方式如下: $json = file_get_contents('php://input');$data = json_decode($json,true); 我在POST方面
$json = file_get_contents('php://input'); $data = json_decode($json,true);
我在POST方面做了很多相同的事情,但是我在Laravel $请求集合中看不到任何数据.我需要做些什么特别的事情来检索这样结构化的JSON数据:
[ { "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" } ]
这是我的jQuery ajax POST代码(带有硬编码数据)
$.ajax({ type: "POST", url: "/people", data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', dataType: "json", success:function(data) { $('#save_message').html(data.message); } });
这是我的Controller中接收POST的代码
public function store(Request $request) { dd($request->all()); }
但我得到的只是:
[]
关于如何检索我的数据的任何想法?
您需要将Ajax调用更改为$.ajax({ type: "POST", url: "/people", data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', contentType: "json", processData: false, success:function(data) { $('#save_message').html(data.message); } });
将dataType更改为contentType并添加processData选项.
要从控制器检索JSON有效内容,请使用:
dd(json_decode($request->getContent(), true));
代替
dd($request->all());