簡體   English   中英

使用 PUT 方法 AJAX 導致 Laravel 中的 $request->all() 數組為空 6

[英]Using PUT method AJAX results in empty $request->all() array in Laravel 6

我有一個非常簡單的表單用於測試目的,當我嘗試使用 $.ajax 放置 formData 時,我得到一個空數組響應,但這僅在我使用 PUT 方法時發生,如果我使用 POST 而不是 PUT 方法按預期工作。

我正在使用 Laravel 6,我在每個 function 中都有一個 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>

嘗試在表單中添加這兩個輸入字段。

<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);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM