Использование метода PUT AJAX приводит к пустому массиву $ request-> all () в Laravel 6 - PullRequest
1 голос
/ 19 октября 2019

У меня очень простая форма для тестирования, когда я пытаюсь PUT formData с помощью $ .ajax, я получаю пустой ответ массива, но это происходит только тогда, когда я использую метод 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" } 

Мне нужны данные формы, потому что я собираюсь положить файлы изображений. Я искал другие подобные вопросы, но никто не решает мою проблему.

Есть другой способ сделать это?


<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>

1 Ответ

0 голосов
/ 19 октября 2019

Попробуйте добавить эти два поля ввода в форму.

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

Первое из них изменяет способ отправки формы на «PUT», а второе включает токен CSRF в форму.

Затем в своем коде AJAX измените тип : «PUT» на , тип: «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);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...