如何在Laravel 5.8中用jQuery Ajax存储含1500+字段的表单?
如何在Laravel 5.8中存储包含1500多个字段的表单?

当前控制器仅能获取到1000个字段的数组,但表单实际包含1514个字段,该如何处理此问题?
控制器代码
public function store(Request $request) { dd($request->all()); }
视图文件代码
@extends('main') @section('content') <form class="add_form" id="add_form" enctype="multipart/form-data"> @csrf @method('PUT') <input type="text" name="text_1" > . . . 共1514个参数 <button type="button" id="submit" >提交</button> </form> @endsection @push('scripts') <script type="text/javascript"> $(document).ready(function(){ $("#submit").on("click",function(e){ e.preventDefault(); if($("#add_form").valid()){ $.ajax({ type:"POST", url:"{{ route('froms.store') }}", data: new FormData($('#add_form')[0]), processData: false, contentType:false, success: function(data){ if(data.status==='success'){ location.reload(); }else if(data.status==='error'){ location.reload(); } } }); }else{ e.preventDefault(); } }); }); </script> @endsection
解决方法
这个问题的核心是PHP默认限制了单个请求的输入字段数量,默认max_input_vars值为1000,超过的字段会被自动忽略。你可以通过以下方式调整:
修改php.ini配置
找到服务器上的php.ini文件,修改以下参数:max_input_vars = 2000 # 设置为大于1514的数值 post_max_size = 20M # 确保表单总数据大小不超过此限制 upload_max_filesize = 20M # 如果有文件上传,同步调整此值修改完成后重启Web服务器(如Apache、Nginx)和PHP服务,使配置生效。
通过.htaccess调整(Apache环境)
如果无法直接修改php.ini,可以在项目根目录的.htaccess文件中添加以下内容:php_value max_input_vars 2000 php_value post_max_size 20M php_value upload_max_filesize 20M在项目代码中临时设置
若上述两种方式都不可行,可在public/index.php文件开头添加以下代码,临时调整PHP配置:ini_set('max_input_vars', 2000); ini_set('post_max_size', '20M'); ini_set('upload_max_filesize', '20M');
调整完成后,重新提交表单,控制器就能获取到所有1514个字段的数据了。
内容的提问来源于stack exchange,提问作者Bhagvat Joshi
相关产品推荐
相关产品推荐

