繁体   English   中英

通过 Ajax 将带有文本和图像的表单提交给 Laravel Controller

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM