Небольшое изменение этого вопроса:
Я хочу использовать jquery и ajax, чтобы представить сообщение об ошибке пользователю,
но затем выполнить обычную обработку, если нет ошибки.
Предположим, что метод "check" возвращает ответ, который является пустым, если ошибки нет, и содержит ошибки, если таковые имеются.
Затем вы можете сделать что-то подобное в своей функции готовности:
$("#theform").submit(function() {
var data = { ... }
$.get('/check', data,
function(resp) {
if (resp.length > 0) {
$("#error").html(resp);
} else {
$("#theform").unbind('submit');
$("#theform").submit();
}
});
event.preventDefault();
});
Итак, как это работает? Когда запускается внешняя функция submit, она строит данные, необходимые для вызова AJAX (здесь функция get более высокого уровня). Вызов запланирован, и основной поток операций немедленно продолжается, но отправка безоговорочно прекращается, поэтому ничего очевидного не происходит.
Проходит некоторое время, и вызов AJAX возвращает результат запроса. Если не пусто, результат показывается пользователю.
Однако, если ответ пуст, функция отправки не связана. Это предотвращает дополнительный вызов системы через внешнюю функцию отправки. Внутренняя функция отправки вызывается. Это запускает фактическую отправку формы к цели формы, и жизнь продолжается, как и ожидалось.