mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 16:51:40 +09:00
Patch exec_json() and related functions to support file uploads
This commit is contained in:
parent
0a625662f7
commit
d45c116c56
2 changed files with 35 additions and 6 deletions
|
|
@ -215,7 +215,12 @@
|
|||
var action_parts = action.split('.');
|
||||
var request_info;
|
||||
if (action === 'raw') {
|
||||
request_info = 'RAW FORM SUBMISSION';
|
||||
if (params instanceof FormData) {
|
||||
request_info = params.get('module') + '.' + params.get('act');
|
||||
} else {
|
||||
request_info = 'RAW FORM SUBMISSION';
|
||||
}
|
||||
console.log(request_info);
|
||||
} else {
|
||||
params = params ? ($.isArray(params) ? arr2obj(params) : params) : {};
|
||||
//if (action_parts.length != 2) return;
|
||||
|
|
@ -342,7 +347,7 @@
|
|||
|
||||
// Send the AJAX request.
|
||||
try {
|
||||
$.ajax({
|
||||
var args = {
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
url: url,
|
||||
|
|
@ -351,7 +356,11 @@
|
|||
headers : headers,
|
||||
success : successHandler,
|
||||
error : errorHandler
|
||||
});
|
||||
};
|
||||
if (params instanceof FormData) {
|
||||
args.contentType = false;
|
||||
}
|
||||
$.ajax(args);
|
||||
} catch(e) {
|
||||
alert(e);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -415,6 +415,7 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
|
|||
|
||||
args[0] = filter_name;
|
||||
args[1] = function(f) {
|
||||
var hasFile = false;
|
||||
var params = {}, res = [], elms = f.elements, data = $(f).serializeArray();
|
||||
$.each(data, function(i, field) {
|
||||
var v = $.trim(field.value), n = field.name;
|
||||
|
|
@ -435,11 +436,20 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
|
|||
}
|
||||
});
|
||||
|
||||
$(f).find('input[type=file][name^=extra_vars]').each(function() {
|
||||
if (this.files && this.files[0]) {
|
||||
params[this.name] = this.files[0];
|
||||
hasFile = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (confirm_msg && !confirm(confirm_msg)) return false;
|
||||
|
||||
//exec_xml(module, act, params, callback, responses, params, form);
|
||||
params['module'] = module;
|
||||
params['act'] = act;
|
||||
params['_rx_ajax_compat'] = 'XMLRPC';
|
||||
exec_json(module + '.' + act, params, function(result) {
|
||||
|
||||
var callback_wrapper = function(result) {
|
||||
if (!result) {
|
||||
result = {};
|
||||
}
|
||||
|
|
@ -454,7 +464,17 @@ function legacy_filter(filter_name, form, module, act, callback, responses, conf
|
|||
});
|
||||
callback(filtered_result, responses, params, form);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (!hasFile) {
|
||||
exec_json(module + '.' + act, params, callback_wrapper);
|
||||
} else {
|
||||
var fd = new FormData();
|
||||
for (let key in params) {
|
||||
fd.append(key, params[key]);
|
||||
}
|
||||
exec_json('raw', fd, callback_wrapper);
|
||||
}
|
||||
};
|
||||
|
||||
v.cast('ADD_CALLBACK', args);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue