Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel控制器中检索form.serialize()数据_Php_Ajax_Laravel - Fatal编程技术网

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
有效。