Данные формы jquery передаются пустыми

У меня есть вызов ajax, где на кнопке отправки щелкните вызов ajax, который инициирует

<form id = "editPet" method = "patch" enctype = "multipart/form-data">

    inputs...

    <button id = "updatePet" data-id = "{{ $pet->uuid }}" data-token = "{{ csrf_token() }}" type = "button">SAVE</button>
</form>

Вызов Ajax:

$('#updatePet').click(function(e) {
    e.preventDefault();
    let petId = $(this).data("id");
    $.ajaxSetup({ headers: {'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')}});
    $.ajax({
        url: "/my/pet/update/" + petId,
        type: "patch",
        data: new FormData($("#editPet")[0]),
        cache: false,
        contentType: false,
        processData: false,
        success: function(response) {
            // Do something
        },
        error: function(error) {
            // Do something
        }
    });
});

На стороне сервера я получаю запрос с dd($request->all()), который является пустым массивом.

Что мне здесь не хватает?

Можете ли вы добавить свою серверную часть также $("#editPet")[0], это должно иметь значение? наверное должен быть $("#editPet").val()

guradio 19.06.2018 00:09

Нет, мы не можем добавить $("#editPet").val() в php, его синтаксис jquery. Если я правильно понял

Gammer 19.06.2018 00:11

не в php в вашем запросе ajax.

guradio 19.06.2018 00:16

Установите флажок «Сохранить журнал» в инструментах разработчика и просмотрите полезные данные запроса. Тогда вы узнаете, на какой это стороне ...

bigless 19.06.2018 00:18

@guradio $("#editPet").val() пуст.

Gammer 19.06.2018 00:24

Журнал @bigless preserve отсутствует.

Gammer 19.06.2018 00:25

Проверьте вкладку «Сеть» в инструментах разработчика. По крайней мере, в Chrome есть.

bigless 19.06.2018 00:29

@guradio new FormData($("#editPet")[0]) передает FormData элемент формы, который действителен для конструктора. developer.mozilla.org/en-US/docs/Web/API/FormData/FormData

Taplar 19.06.2018 00:44

Попробуйте снять processData: false. «По умолчанию данные, переданные в параметр данных в виде объекта (технически, что угодно, кроме строки), будут обработаны и преобразованы в строку запроса, соответствующую типу содержимого по умолчанию» application / x-www-form-urlencoded ". Если вы хотите отправить DOMDocument или другие необработанные данные, установите для этого параметра значение false." Вы даете ему элемент FormData для данных. Вы хотите, чтобы он превратил это в строку запроса по запросу.

Taplar 19.06.2018 00:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
35
1

Ответы 1

Проблема решается удалением:

contentType: false,
processData: false,

Как отметил @Taplar в комментарии,

"By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded"

Другие вопросы по теме