Разъясните плиз.
Хочу открыть страницу (form/index). На нее по методу GET с другого url (form/update) подтянуть форму редактирования. Но по нажатии submit отправить POST на form/update и результат отобразить на все том же form/index.
Для реализации этой классики использую JS (фрагмент JS поддтягивания опускаю, с ним все хорошо):
Код: Выделить всё
$('#form').on('beforeSubmit', function () {
$.ajax( {
url: '/form/update,
type: 'POST',
data: new FormData( $('#form')[0] ),
processData: false,
contentType: false,
success: function(data) {
$("#form-content").html(data);
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseText);
}
} );
return false;
})
Ну собственно проблемы:
1) Использование new FormData( $('#form')[0] ) необходимо, поскольку $('#form').serialize() не подтягивает файлы (у формы задано 'enctype' => 'multipart/form-data').
2) Данный код для некоторых правил валидаций на стороне клиента yiiActiveForm('validate') падает с SecurityError, тем самым до обработки beforeSubmit дело не доходит. и мы редиректимся на form/update по стандартному submit-у, что нам не надо.
Все это мне напоминает какой-то костыль.
Может кто-ни будь знает более правильный путь?