Php 如何在laravel控制器中检索form.serialize()数据
我使用Php 如何在laravel控制器中检索form.serialize()数据,php,ajax,laravel,Php,Ajax,Laravel,我使用$(“表单”).serialize()提交表单数据。当我从一个方法返回值时,它工作得很好。我的方法代码如下 public function store(Request $request) { $list = @$request['lists']; $total_amount = @$request->total_amount; $r_g_amount = @$request->r_g_amount; $type = @$request->
$(“表单”).serialize()
提交表单数据。当我从一个方法返回值时,它工作得很好。我的方法代码如下
public function store(Request $request)
{
$list = @$request['lists'];
$total_amount = @$request->total_amount;
$r_g_amount = @$request->r_g_amount;
$type = @$request->type;
$cash = @$request->cash;
$credit = @$request->credit;
$bank = @$request->bank;
$from = @$request->from;
$to = @$request->to;
return $cash;
}
它向我发送空值,如果我return$request->formdata
,它将向我发送表单的所有详细信息formdata
是一个变量,我从ajax
以formdata:$(“form”).serialize()的形式传递它
那么如何将表单数据的值获取到变量中呢
ajax请求
$.ajax({
url: "{{ route('HK.store') }}",
data: {
lists: list, total_amount: total_amount, formdata : $("form").serialize(), "_token": "{{ csrf_token() }}"
},
type: "POST",
success: function (data) {
console.log(data);
}
});
enter code here
使用动态post数据时,必须确保变量存在。下面是一个如何获取所需变量的示例:
public function store(Request $request)
{
$data = $request->all();
$list = array_get($data, 'list', 'default value');
$total_amount = array_get($data, 'total_amount', 0);
...
return $whatever;
}
您需要更新代码,如:
public function store(Request $request)
{
$list = $request->lists;
$total_amount = $request->total_amount;
$r_g_amount = $request->r_g_amount;
$type = $request->type;
$cash = $request->cash;
$credit = $request->credit;
$bank = $request->bank;
$from = $request->from;
$to = $request->to;
return response(['cash' => $cash]);
}
在Laravel的控制器功能中使用以下代码
$box = $request->all();
$myValue= array();
parse_str($box['formdata'], $myValue);
print_r($myValue);
希望它能帮助你 您可以先将序列化的formData转换为对象,然后将其发送到服务器:
const clientInfo= $('#checkoutForm').serialize();
const searchParams = new URLSearchParams(clientInfo);
clientInfo = Object.fromEntries(searchParams);// { 'type' => 'listing', 'page' => '2', 'rowCount' => '10' }
然后在ajax请求中,将clientInfo
传递给data
属性:
$.ajax({
url: ...,
method: "post",
data: clientInfo ,
success: function(){
}
})
在控制器中,当您添加有效负载时,它将如下所示:
array:6 [
"customer_name" => "Arely Torphy II"
"customer_email" => "lexi.kulas@jacobson.net"
"customer_phone" => "1-448-897-3923 x1937"
"address" => "1422 Ellie Stream Suite 859"
"post" => "37167"
"company_name" => "company"
]
现在,您可以轻松地检索任何您想要的数据。您必须使用$request->all()检索所有发布的数据您可以使用JSON.stringify(form.serializeObject()),然后使用这里提到的JSON中间件:它再次发送不必要的数据,它发送nullvalue@HirenMangukiya也许你没有把它们发送到后端?向我们展示js请求please@HirenMangukiya尝试在中添加数据类型:“json”
ajax@HirenMangukiya您可以将devtools的网络选项卡的屏幕截图与您提出的请求一起附上吗?让我们一起来。请检查聊天室我在这里附上照片很抱歉,兄弟,我的系统崩溃了,但我使用了formdata:$(“form”).serialize()和post ajax方法,并用上述代码获取数据。它工作正常。@HirenMangukiya您是否尝试过分解字符串,然后像解析parse_str(explode(“?”,$box['formdata'])[1],$myValue)那样解析它
@linktoahef感谢您的建议您的代码对我不起作用,但explode
有效。