Просмотров: 5139 шт.
Одной из самых запутанных частей изучения jQuery является сабмит формы через Ajax. В частности, разработчики иногда не понимают разницы между
return false и
preventDefault(). Оба эти подхода могут быть использованы для запрета выполнять действие по умолчанию у формы, то есть, при нажатии кнопки submit вы запускаете jQuery-метод, а не стандартное действие, прописанное в action формы.
Но оказывается, есть фундаментальное отличие между return false и preventDefault().
*****
return false полностью отключает стандартный сабмит формы, в то время как preventDefault() только предотвращает перенаправление на страницу, указанную в атрибуте
action формы. Если вы используете первый способ, то вы сможете обработать форму только один раз, а любые дальнейшие действия будут отключены. Представьте себе, что произойдет, когда у вас есть ещё проверка формы посредством Ajax: тогда в случае нахождения неправильно заполненных полей высветится ваше уведомление. Но когда пользователь корректно заполнит все поля, форма уже не отправится, т.к. return false уже её отключил..
Зато preventDefault() отключит лишь действие по умолчанию для формы, но действия, которые вы самостоятельно "повесите" на submit продолжат работать.
Поэтому рекомендую использовать такую конструкцию:
$('#testForm').submit(function(e) {
// собираем данные из формы
$.ajax({
// используем Ajax для отправки данных и получения ответа сервера
});
e.preventDefault();
});
Комментарии:
Авторизуйтесь или зарегистрируйтесь, чтобы иметь возможность комментировать записи!