Отправка формы с помощью PJAX

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

Форма HTML здесь

<form  class="form_class"><input type="text" name="search" id="search_query" class="basic_input" value="" /><button onclick="this.form.submit();" >Find</button></form>

вот мой pjax-код для вызова формы

$(document).on('submit', '.form_class', function(event) {
          $.pjax.submit(event, '#container_id');
        });

это работает - но отправка формы по умолчанию тоже происходит, я хочу единственный способ PJAX, я не хочу полной перезагрузки страницы (традиционная отправка)

2 ответа

Просто используйте объект события, чтобы отменить поведение отправки по умолчанию:

$(document).on('submit', '.form_class', function(event) {
    event.preventDefault(); // stop default submit behavior

    $.pjax.submit(event, '#container_id');
});

Если это не сработает, возможно, вы отменяете это слишком поздно. Пытаться:

$(document.body).on('submit', '.form_class', function(event) {
    event.preventDefault(); // stop default submit behavior when it bubbles to <body>

    $.pjax.submit(event, '#container_id');
});

Прослушайте события отправки, которые вы хотите отправить через PJAX, preventDefault() событие, и, наконец, передать событие $.pjax.submit(event),

Например:

$(document).on('submit', 'form[data-pjax]', function(event) {
    event.preventDefault();
    $.pjax.submit(event, '#pjax-container', {
        'push': true,
        'replace': false,
        'timeout': 5000,
        'scrollTo': 0,
        'maxCacheLength': 0
    });
});

Причина, по которой он обновлялся, заключается в том, что он добавлял контейнер без добавления фрагмента.

Изменить:

$.pjax.submit(event, '#container_id');

в

$.pjax.submit(event, '#container_id', {fragment:'#container_id'});

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

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