Раньше мои вызовы ajax делались так:
form.bind("submit", function(e) {
e.preventDefault();
form.ajaxSpin("large");
form.ajaxSubmit({
success: function(result) {
if (!b.ajaxFailure(result, true)) {
if(b.validateForm(form,result)) {
console.log(result); // TODO: something?
}
}
},
complete: function() {
form.ajaxSpin(false);
}
});
});
, пока мой дизайн постепенно улучшается.
и теперь я хочу реализовать проверку модели на стороне клиента, прежде чем делатьфактический запрос.
Я включил в проект плагин jquery.validation.js
вместе с последним скриптом jquery.validation.unobtrusive.js
.
Затем я изменил свой код на:
form.validate({
submitHandler: function() {
form.ajaxSpin("large");
form.ajaxSubmit({
success: function(result) {
if (!b.ajaxFailure(result, true)) {
if (b.validateForm(form, result)) {
console.log(result); // TODO: something?
}
}
},
complete: function() {
form.ajaxSpin(false);
}
});
}
});
, который, как я полагал, был бы точно таким же, за исключением того, что он не будет делать запросы, если проверка не пройдёт сначала.
аспект проверки работает отлично, полностью, как и ожидалось, используя атрибуты данных, которые наборы mvc из моделина мой взгляд, DOM.
часть, где это не удается, и я не могу понять, почему я вернулся к тому, чтобы не быть AJAX.страница просто перезагружается, мой submitHandler
никогда не срабатывает (вопреки тому, что эта ссылка предлагает)
Я попробовал несколько других распространенных имен для submitHandler
(onSuccess
, success
и т. д.), но, похоже, ни один из них не работает.