Uncaught TypeError: конструктор FormData: аргумент 1 не реализует интерфейс HTMLFormElement. в ларавеле

Моя форма похожа на эту демонстрацию

В.1 Я хотел бы преобразовать эту форму в ajax, но мне кажется, что в моем коде ajax чего-то не хватает. При отправке вообще ничего не делает.

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

Q3. Я хочу, когда нажимаю кнопку «Следующий шаг». Все формы сохранить и перейти на следующую страницу.

мой клинок

<form method = "post" enctype = "multipart/form-data" action = "{{ route('update', auth()->id()) }}">
    @csrf
    @method('put')
    <fieldset>
        @include('Home.steps.step-1')
    </fieldset>
    <fieldset>
        @include('Home.steps.step-2')
    </fieldset>
    <fieldset>
        @include('Home.steps.step-3')
    </fieldset>
    <fieldset>
        @include('Home.steps.step-4')
    </fieldset>
    <fieldset>
        @include('Home.steps.step-5')
    </fieldset>
    <fieldset>
        @include('Home.steps.step-6')
    </fieldset>
</form>

js

$(document).ready(function (e) {
    $('.btn-next').on('click',(function(e) {
        e.preventDefault();
        var formData = new FormData(this);

        $.ajax({
            type:'POST',
            url: $(this).attr("{{ route('update', auth()->id()) }}"),
            data:formData,
            cache:false,
            contentType: false,
            processData: false,
            success:function(data){
                console.info("success");
                console.info(data);
            },
            error: function(data){
                console.info("error");
                console.info(data);
            }
        });
    }));
});

Я получаю эту ошибку в консоли.

Uncaught TypeError: конструктор FormData: аргумент 1 не реализует интерфейс HTMLFormElement.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
11 644
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно указать элемент формы, а не кнопку

var formData = new FormData($('#form-id'));

Я снова вижу эту ошибку. i.stack.imgur.com/JcntJ.png Моя проблема еще не решена/

Mahmoud Khosravi 25.12.2020 20:33

@MahmoudKhosravi попробуй var formData = new FormData($('#form-id')[0]);

moghwan 17.03.2021 11:44

Это произошло потому, что вы создали свой FormData с ключевым словом this. Ключевое слово this используется для обозначения элемента, который активировал функцию javascript. В вашем случае это было нажатие кнопки, поэтому this будет ссылаться на кнопку. Если бы вы активировали свою функцию с помощью отправки формы, вы бы не столкнулись с этой ошибкой. Поэтому, когда вы создаете новый FormData, вам теперь нужно передать ему идентификатор вашего элемента формы, а не «это».

Psalms Kalu 20.05.2021 11:33

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