У меня простая форма с remote = true.
Эта форма фактически находится в диалоговом окне HTML, которое закрывается при нажатии кнопки «Отправить».
Теперь мне нужно внести некоторые изменения на главную HTML-страницу после успешной отправки формы.
Я пробовал это с помощью jQuery. Но это не гарантирует, что задачи будут выполнены после некоторой формы ответа на отправку формы.
$("#myform").submit(function(event) {
// do the task here ..
});
Как прикрепить обратный вызов, чтобы мой код выполнялся только после успешной отправки формы? Есть ли способ добавить в форму обратный вызов .success или .complete?
Ответы:
Я только что сделал это -
И все сработало отлично.
См. Эту документацию по api для получения более подробной информации.
источник
<form>
присылается обычно? (Я имею в виду не с Ajax) Что я могу указать в качестве первого аргумента.bind()
? РЕДАКТИРОВАТЬ: ну, я думаюclick
. Nvm, извините. : pЯ не мог заставить решение номер один работать надежно, но нашел, что это работает. Не уверен, требуется это или нет, но у меня нет атрибута действия или метода в теге, который гарантирует, что POST обрабатывается функцией $ .ajax, и дает вам возможность обратного вызова.
источник
$(this).serialize()
линия. Он позволяет использоватьjQuery.ajax()
для отправки существующей формы в фоновом режиме, затем перехватывать ответ от сервера и что-то с ним делать..serialize
не включает файловые входы в ваш запрос POSTed. Вместо этого используйте HTML5 FormData (см. Этот вопрос ), если вы не поддерживаете старые браузеры, такие как IE <9$(this).serialize()
, это решило мои проблемы!Вам придется делать что-то вручную с помощью AJAX-вызова сервера. Это также потребует от вас переопределения формы.
Но не волнуйтесь, это проще простого. Вот обзор того, как вы будете работать с формой:
preventDefault
метод)Во-первых, вам нужно отменить действие отправки формы следующим образом:
А затем возьмите значение данных. Предположим, у вас есть одно текстовое поле.
А затем отправьте запрос. Давайте просто предположим, что это запрос POST.
И это должно обойтись.
Примечание 2: для анализа данных формы желательно использовать плагин . Это сделает вашу жизнь действительно легкой, а также обеспечит приятную семантику, имитирующую фактическое действие отправки формы.
Примечание 2: вам не нужно использовать отсрочки. Это просто личное предпочтение. Вы также можете сделать следующее, и это тоже должно сработать.
источник
Для MVC здесь был еще более простой подход. Вам нужно использовать форму Ajax и установить AjaxOptions
вот код отправки, он находится в разделе готовности документа и связывает событие onclick кнопки с отправкой формы
вот обратный вызов, указанный в AjaxOptions
в методе контроллера для MVC это выглядит так
источник
Я не верю, что существует функция обратного вызова, подобная описанной вами.
Что здесь нормально, так это делать изменения на каком-нибудь серверном языке, например PHP.
В PHP вы можете, например, получить скрытое поле из формы и внести некоторые изменения, если оно есть.
PHP:
Один из способов сделать это в JQuery - использовать Ajax. Вы можете прослушать отправку, вернуть false, чтобы отменить поведение по умолчанию, и вместо этого использовать jQuery.post (). jQuery.post имеет успешный обратный вызов.
http://api.jquery.com/jQuery.post/
источник
Обработчики формы «при отправке» вызываются перед отправкой формы. Я не знаю, есть ли обработчик, который нужно вызвать после отправки формы. В традиционном смысле, отличном от Javascript, при отправке формы страница перезагружается.
источник
источник
ajaxForm()
компонентом третьей стороной вы установили? Это не стандартная часть jQuery.