[英]Submit form with text and images to Laravel Controller via Ajax
使用 Laravel 7 jQuery v3.4.1
我正在尝试通过 Ajax 将表单的内容发送到 Laravel Controller。 该表单包含一个文本字段和一个文件字段。 我想找到一种方法在一个请求中发送两种类型的字段。
看起来内容已发送,但 Laravel 无法读取并返回错误。
我的 Ajax 代码
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var form = $('form')[0];
var formData = new FormData(form);
$.ajax({
url: form.attr('action'),
data: formData,
cache: false,
method:'POST',
contentType: false,
processData: false,
success: function (data) {
console.log(data);
},
error: function (error,jqXHR, textStatus, errorThrown) {
console.log(data.error);
}
});
表格
<form id="newProduct" action="{{route('Product.store',app()->getLocale())}}" method="POST" enctype="multipart/form-data">
@csrf
<input name="title" maxlength="10" length="10" placeholder="Product Title" type="text" id="title" class="form-control>
<input type="file" name="files" id="files" class="files">
</form>
Laravel function
public function store(Request $request)
{
dd($request->input->all());
}
数据通过 ajax 发送,但不知何故 Laravel 无法全部访问。 我从 Laravel Call to a member function all() on null收到以下错误消息,返回码为 500 Z9D55ZD5555DC05BB955D43DEEF68F05
这是通过 ajax 发送给 Larval 的 http 请求的摘录
-----------------------------23552347725043592001228805073 内容处置:表单数据; 名称=“标题”自卫队
必须更改什么,以便 Laravel 可以读取数据? 提前致谢。
根据评论, $request->input
不是Illuminate\Http\Request
class 的属性,因此对其调用all()
会返回 null,因为它不存在。
正如您所发现的,可以使用all()
帮助程序 function, $request->all()
检索所有输入。
或者,可以单独检索输入,并将输入应用为 function $request->input('field')
或$request->get('field')
。 其中$request->input()
也可以获得嵌套条目$request->input('form.name')
,这是get()
无法做到的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.