【问题标题】:Using PUT method AJAX results in empty $request->all() array in Laravel 6在 Laravel 6 中使用 PUT 方法 AJAX 会导致空的 $request->all() 数组
【发布时间】:2020-02-15 21:31:03
【问题描述】:

我有一个非常简单的表单用于测试目的,当我尝试使用 $.ajax 放置 formData 时,我得到一个空数组响应,但这仅在我使用 PUT 方法时发生,如果我使用 POST 而不是 PUT 方法作为预计。

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

var_dump($request->all())

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

array(0) {}

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

array(4) { ["form1"]=> string(1) "1" ["form2"]=> string(1) "2" ["form3"]=> string(1) "3" ["form4"]=> string(1) "4" } 

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

还有其他方法可以执行此操作吗?


<form id="formTest" type="multipart/form-data">
    <input name="form1" value="1">
    <input name="form2" value="2">
    <input name="form3" value="3">
    <input name="form4" value="4">
    <button type="submit">Accept</button>
</form>

<script>
    $(document).ready(function () {
        $('#formTest').on('submit', function (e) {

            e.preventDefault();

            var formData = new FormData($(this)[0]);

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

    });
</script>

【问题讨论】:

  • 你在路由文件中使用 Route::put() 吗?
  • @MatMorici 是的,对于我正在使用的 PUT:Route::put('movies/{id}','MoviesController@update');对于 POST:Route::post('movies','MoviesController@add');

标签: php ajax laravel api


【解决方案1】:

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

<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">

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

然后在您的 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);
    }
});

【讨论】:

  • 完美运行!
猜你喜欢
  • 2020-06-06
  • 2019-01-31
  • 2021-12-11
  • 2020-05-23
  • 2021-05-22
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 2016-05-24
相关资源
最近更新 更多