diff --git a/src/utils/ajaxfileupload.js b/src/utils/ajaxfileupload.js index 305dc9d..08ec5b3 100644 --- a/src/utils/ajaxfileupload.js +++ b/src/utils/ajaxfileupload.js @@ -4,7 +4,6 @@ jQuery.extend({ if (s.error) { s.error.call(s.context || s, xhr, status, e); } - // Fire the global callback if (s.global) { (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]); @@ -13,17 +12,14 @@ jQuery.extend({ createUploadIframe: function (id, uri) { //create frame var frameId = 'jUploadFrame' + id; - if (window.ActiveXObject) { var io = document.createElement(''); if (typeof uri == 'boolean') { io.src = 'javascript:false'; - } - else if (typeof uri == 'string') { + } else if (typeof uri == 'string') { io.src = uri; } - } - else { + } else { io = document.createElement('iframe'); io.id = frameId; io.name = frameId; @@ -31,10 +27,8 @@ jQuery.extend({ io.style.position = 'absolute'; io.style.top = '-1000px'; io.style.left = '-1000px'; - document.body.appendChild(io); - - return io + return io; }, createUploadForm: function (id, fileElementId) { //create form @@ -45,12 +39,12 @@ jQuery.extend({ form.remove(); } form = $('
'); - var oldElement = $('#' + fileElementId); - var newElement = $(oldElement).clone(true).val(""); + var oldElement = $('#' + fileElementId); + var newElement = $(oldElement).clone(true).val(""); //须要复制元素的全部事件处理。 - $(oldElement).attr('id', fileId); - $(oldElement).before(newElement); - $(oldElement).appendTo(form); + $(oldElement).attr('id', fileId); + $(oldElement).before(newElement); + $(oldElement).appendTo(form); //set attributes $(form).css('position', 'absolute'); $(form).css('top', '-1200px'); @@ -58,7 +52,6 @@ jQuery.extend({ $(form).appendTo('body'); return form; }, - ajaxFileUpload: function (s) { // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout s = jQuery.extend({}, jQuery.ajaxSettings, s); @@ -73,7 +66,7 @@ jQuery.extend({ } var requestDone = false; // Create the request object - var xml = {} + var xml = {}; if (s.global) jQuery.event.trigger("ajaxSend", [xml, s]); // Wait for a response to come back @@ -103,7 +96,6 @@ jQuery.extend({ // If a local callback was specified, fire it and pass it the data if (s.success) s.success(data, status); - // Fire the global callback if (s.global) jQuery.event.trigger("ajaxSuccess", [xml, s]); @@ -117,30 +109,22 @@ jQuery.extend({ // The request was completed if (s.global) jQuery.event.trigger("ajaxComplete", [xml, s]); - // Handle the global AJAX counter if (s.global && ! --jQuery.active) jQuery.event.trigger("ajaxStop"); - // Process result if (s.complete) s.complete(xml, status); - - jQuery(io).unbind() - + jQuery(io).unbind(); setTimeout(function () { try { $(io).remove(); $(form).remove(); - } catch (e) { jQuery.handleError(s, xml, null, e); } - - }, 100) - - xml = null - + }, 100); + xml = null; } } // Timeout checker @@ -158,12 +142,23 @@ jQuery.extend({ $(form).attr('target', frameId); if (form.encoding) { form.encoding = 'multipart/form-data'; - } - else { + } else { form.enctype = 'multipart/form-data'; } - $(form).submit(); - + let submitType = s.submitType; + let $form = $(form); + if (!submitType || submitType == 'form') { + $form.submit(); + } else if (submitType == 'ajax') { + $form.ajaxSubmit({ + success: function (data, status) { + s.success(data, status); + }, + error: function (err) { + jQuery.handleError(s, xml, null, err); + } + }); + } } catch (e) { jQuery.handleError(s, xml, null, e); } @@ -174,9 +169,7 @@ jQuery.extend({ document.getElementById(frameId).addEventListener('load', uploadCallback, false); } return { abort: function () { } }; - }, - uploadHttpData: function (r, type) { var data = !type; data = type == "xml" || data ? r.responseXML : r.responseText;