在 Laravel 6 中使用 PUT 方法 AJAX 会导致 $request->all() 数组为空

Emm*_*dez 5 php api ajax laravel

我有一个非常简单的用于测试目的的表单,当我尝试使用 $.ajax 放置 formData 时,我得到一个空数组响应,但只有当我使用 PUT 方法时才会发生这种情况,如果我使用 POST 而不是 PUT 方法按预期工作。

我使用 Laravel 6,每个函数都有一个 var_dump:

var_dump($request->all())
Run Code Online (Sandbox Code Playgroud)

当我使用 PUT 方法时,我得到:

array(0) {}
Run Code Online (Sandbox Code Playgroud)

当我使用 POST 方法时,我得到:

array(4) { ["form1"]=> string(1) "1" ["form2"]=> string(1) "2" ["form3"]=> string(1) "3" ["form4"]=> string(1) "4" } 
Run Code Online (Sandbox Code Playgroud)

我需要 formData 因为我要 PUT 图像文件。我正在寻找另一个类似的问题,但没有人解决我的问题。

还有另一种方法可以执行此操作吗?

array(0) {}
Run Code Online (Sandbox Code Playgroud)

Ahm*_*imi 3

尝试在表单中添加这两个输入字段。

<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)

第一个是将表单提交方法更改为“PUT”,第二个是将 CSRF 令牌包含到表单中。

然后在您的 AJAX 代码中,将type: 'PUT'更改为type: 'POST'

$.ajax({
    url: '<?echo($config->get('apiUrl'))?>movies/13',
    type: 'POST',
    processData: false,
    contentType: false,
    data: formData,
    success: function(result) {},
    error: function(data) {
        console.log(data);
    }
});
Run Code Online (Sandbox Code Playgroud)