mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-27 07:44:04 +02:00
js: Properly submit multipart/form-data
This is not IE <10 compatible. Fix follows. ;-) refs #8758
This commit is contained in:
parent
f3c8f2229f
commit
c1d9cde312
@ -199,6 +199,7 @@
|
|||||||
var $form = $(event.currentTarget).closest('form');
|
var $form = $(event.currentTarget).closest('form');
|
||||||
var url = $form.attr('action');
|
var url = $form.attr('action');
|
||||||
var method = $form.attr('method');
|
var method = $form.attr('method');
|
||||||
|
var encoding = $form.attr('enctype');
|
||||||
var $button = $('input[type=submit]:focus', $form).add('button[type=submit]:focus', $form);
|
var $button = $('input[type=submit]:focus', $form).add('button[type=submit]:focus', $form);
|
||||||
var $target;
|
var $target;
|
||||||
var data;
|
var data;
|
||||||
@ -230,6 +231,10 @@
|
|||||||
method = method.toUpperCase();
|
method = method.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof encoding === 'undefined') {
|
||||||
|
encoding = 'application/x-www-form-urlencoded';
|
||||||
|
}
|
||||||
|
|
||||||
if ($button.length === 0) {
|
if ($button.length === 0) {
|
||||||
$button = $('input[type=submit]', $form).add('button[type=submit]', $form).first();
|
$button = $('input[type=submit]', $form).add('button[type=submit]', $form).first();
|
||||||
}
|
}
|
||||||
@ -266,14 +271,22 @@
|
|||||||
|
|
||||||
url = icinga.utils.addUrlParams(url, dataObj);
|
url = icinga.utils.addUrlParams(url, dataObj);
|
||||||
} else {
|
} else {
|
||||||
data = $form.serializeArray();
|
if (encoding === 'multipart/form-data') {
|
||||||
|
data = new FormData($form[0]);
|
||||||
|
} else {
|
||||||
|
data = $form.serializeArray();
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof autosubmit === 'undefined' || ! autosubmit) {
|
if (typeof autosubmit === 'undefined' || ! autosubmit) {
|
||||||
if ($button.length && $button.attr('name') !== 'undefined') {
|
if ($button.length && $button.attr('name') !== 'undefined') {
|
||||||
data.push({
|
if (data instanceof FormData) {
|
||||||
name: $button.attr('name'),
|
data.append($button.attr('name'), $button.attr('value'));
|
||||||
value: $button.attr('value')
|
} else {
|
||||||
});
|
data.push({
|
||||||
|
name: $button.attr('name'),
|
||||||
|
value: $button.attr('value')
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,13 +100,25 @@
|
|||||||
headers['X-Icinga-WindowId'] = 'undefined';
|
headers['X-Icinga-WindowId'] = 'undefined';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is jQuery's default content type
|
||||||
|
var contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
|
||||||
|
|
||||||
|
var isFormData = data instanceof FormData;
|
||||||
|
if (isFormData) {
|
||||||
|
// Setting false is mandatory as the form's data
|
||||||
|
// won't be recognized by the server otherwise
|
||||||
|
contentType = false;
|
||||||
|
}
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var req = $.ajax({
|
var req = $.ajax({
|
||||||
type : method,
|
type : method,
|
||||||
url : url,
|
url : url,
|
||||||
data : data,
|
data : data,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
context: self
|
context: self,
|
||||||
|
contentType: contentType,
|
||||||
|
processData: ! isFormData
|
||||||
});
|
});
|
||||||
|
|
||||||
req.$target = $target;
|
req.$target = $target;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user