Ajax .done () не обнаруживает form.submit - PullRequest
0 голосов
/ 26 октября 2018

Я добавляю форму из другого файла с помощью ajax, это обычная форма, которая вызывается событием onclick, а именно:

<a href="javascript:void(0);" class="remitir" title="Reemitir Solicitud" data-id="'.$value['idsolicitud'].'"><i class="fas fa-lg fa-retweet"></i></a>

и jquery за ним:

$('.remitir').on('click', function (e) {
        e.preventDefault();
        var id = $(this).data('id');
        remiteSolicitud(id);
    });

и вот код AJAX

function remiteSolicitud(x){
$.ajax({
        type: 'POST',
        url: 'anotherFile/',
        data: { id: x },
        cache: false,
        beforeSend: function () {
            $(".page-loader-wrapper").fadeIn();
        },
        success: function (e) {
            $('#myModal').modal('show');
            $('.modal-body').html(e);
        },
        complete: function () {
            $(".page-loader-wrapper").fadeOut();
        }
    }).done(function () {
        $("#formID").submit(function (event) {
            alert("Handler for .submit() called.");
            event.preventDefault();
        });

    });
}

Теперь у меня проблема в том, что функция .done () не определяет, когда я отправляю форму, и перезагружает страницу.

У кого-нибудь есть идеи, что бы это могло быть? У меня точно такой же код в другом файле, и он работает.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Просто отправьте событие формы, которое вызывает ajax.

$("body").on("submit", "#formID", function (event) {
    event.preventDefault();
    //put your ajax call here

    alert("Handler for .submit() called.");
});
0 голосов
/ 26 октября 2018

Вам не нужно прикреплять событие в обратном вызове, просто прикрепите его перед выполнением запроса.

Я добавляю форму из другого файла с помощью ajax

Так что вам нужно использовать делегирование события .on(), потому что ваша форма динамически добавляется в DOM:

$("body").on("submit", "#formID", function (event) {
    event.preventDefault();

    alert("Handler for .submit() called.");
});

$.ajax({
    type: 'POST',
    url: 'anotherFile/',
    data: { id: x },
    cache: false,
    beforeSend: function () {
        $(".page-loader-wrapper").fadeIn();
    },
    success: function (e) {
        $('#myModal').modal('show');
        $('.modal-body').html(e);
    },
    complete: function () {
        $(".page-loader-wrapper").fadeOut();
    }
});
...