Closed webspec2012 closed 6 years ago
Все верно, не отправляется. Потому что в Ajax файлы отправляются через "костыль" FormData...
https://stackoverflow.com/questions/5392344/sending-multipart-formdata-with-jquery-ajax
Да, если применить, то всё работает, хотелось бы чтоб уже по дефолту рабатало =)
Я не силен в js. Напишите, как у вас получилось. И я добавлю в релиз.
Я тоже не силен, поэтому сделал по дубовому:
/**
* Adds event handlers to the form to check for submit
*/
ModalAjax.prototype.formSubmit = function () {
var form = jQuery(this.element).find('form');
if (form.attr('method') !== 'GET' && window.FormData !== undefined) {
// Convert form to ajax submit
jQuery.ajax({
method: form.attr('method'),
url: form.attr('action'),
data: new FormData(form[0]),
processData: false,
contentType: false,
context: this,
beforeSend: function (xhr, settings) {
jQuery(this.element).triggerHandler('kbModalBeforeSubmit', [xhr, settings]);
},
success: function (data, status, xhr) {
var contentType = xhr.getResponseHeader('content-type') || '';
if (contentType.indexOf('html') > -1) {
// Assume form contains errors if html
this.injectHtml(data);
status = false;
}
jQuery(this.element).triggerHandler('kbModalSubmit', [data, status, xhr, this.selector]);
}
});
} else {
// Convert form to ajax submit
jQuery.ajax({
method: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
context: this,
beforeSend: function (xhr, settings) {
jQuery(this.element).triggerHandler('kbModalBeforeSubmit', [xhr, settings]);
},
success: function (data, status, xhr) {
var contentType = xhr.getResponseHeader('content-type') || '';
if (contentType.indexOf('html') > -1) {
// Assume form contains errors if html
this.injectHtml(data);
status = false;
}
jQuery(this.element).triggerHandler('kbModalSubmit', [data, status, xhr, this.selector]);
}
});
}
return false;
};
Ок, спасибо. Потестирую )
Если в модальном окне загрузить форму с загрузкой файла, то по факту файл на сервер не отправляется.