Ajax, JQuery Validation и MVC

У меня есть проблема, которую я не могу решить. Сначала немного контекста, который может быть актуален.

Я создаю MVC-подобный (я говорю «как», потому что я все еще учусь, как MVC работает) фреймворк php для моего программного обеспечения. Я хочу, чтобы все формы ввода отправляли данные через ajax на внутренний контроллер, который направляет данные и вводит их в соответствующую базу данных. Весь HTML-код генерируется через классы php, а JavaScript включается через классы php.

У меня проблема с функцией AJAX. Он продолжает пытаться отправить запрос на публикацию в обычном режиме, пока я хочу, чтобы он отправлялся асинхронно. У меня он работал правильно в разные моменты времени, но, кажется, он ломается, когда я меняю аспекты фреймворка. Я пробовал различные комбинации «form.preventDefault ()» и «return false», но это не имеет значения. Часть проверки работает (она не будет отправлена ​​с недействительными записями. Использование этот плагин). Я обнаружил, что JavaScript кеширует сам себя, и я работал над этим, добавляя номера версий к имени файла.

Вот код Ajax. Он возвращает сообщение пользователю о статусе запроса. Любая идея, почему он отказывается представить асинхронно?

         $(document).ready(function() {
// Initialize form validation
***old code
$("form[name='ajaxform']").validate({ ***
// Specify validation rules

***Updated code
$('#ajaxsubmit').on('click', function() {$("#ajaxform").valid();
});
// Initialize form validation
$('#ajaxform').validate({ ***....[omitting the validation rules for brevity]

errorElement : 'div',
errorLabelContainer: '#usermessage',

submitHandler: function(form) {
$.ajax({
cache   : false,
url     : $(form).attr('action'),
type    : 'POST',
dataType: 'text',
data    : $(form).serialize(),
success : function(data) {
var response = $.parseJSON(data);
if(response['error']){
$('#usermessage').html(response['error']);
}else{
if(response['success']){
$('#usermessage').css({"color":"#00b300","font-weight":"bold"});
$('#usermessage').html(response['success']);
}
}
},
error   : function(err) {
alert(err);
}
});
return false;
}
});

});

0

Решение

Вот как я справлялся с проблемами, связанными с попытками отправки форм, даже когда я пытаюсь предотвратитьDefault ().

Я не видел вашу HTML-разметку, поэтому я не уверен.

Если у тебя есть

<button type='submit'>Submit</button>

Измените это на

<button type='button'>Submit</button>

а затем прослушать нажатие на кнопку с JavaScript, а не отправку формы

0

Другие решения

Вы можете изменить обработчик:

submitHandler: function(form) {

Для обработки событий также:

submitHandler: function(form, event) {
event.preventDefault();
0

По вопросам рекламы [email protected]