Отправка формы с помощью 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, если фрагмент не установлен, тогда используйте контейнер... но их решать, как это решить.