jQuery.extend({ createUploadIframe: function(id, uri) { var frameId = "jUploadFrame" + id; var iframeHtml = '"; jQuery(iframeHtml).appendTo(document.body); return jQuery("#" + frameId).get(0) }, createUploadForm: function(id, fileElementId, data) { var formId = "jUploadForm" + id; var fileId = "jUploadFile" + id; var form = jQuery('
'); if (data) { for (var i in data) { jQuery('').appendTo(form) } } var oldElement = jQuery("#" + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr("id", fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); jQuery(form).css("position", "absolute"); jQuery(form).css("top", "-1200px"); jQuery(form).css("left", "-1200px"); jQuery(form).appendTo("body"); return form }, ajaxFileUpload: function(s) { s = jQuery.extend({}, jQuery.ajaxSettings, s); var id = new Date().getTime(); var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data) == "undefined" ? false: s.data)); var io = jQuery.createUploadIframe(id, s.secureuri); var frameId = "jUploadFrame" + id; var formId = "jUploadForm" + id; if (s.global && !jQuery.active++) { jQuery.event.trigger("ajaxStart") } var requestDone = false; var xml = {}; if (s.global) { jQuery.event.trigger("ajaxSend", [xml, s]) } var uploadCallback = function(isTimeout) { var io = document.getElementById(frameId); try { if (io.contentWindow) { xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML: null; xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument: io.contentWindow.document } else { if (io.contentDocument) { xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML: null; xml.responseXML = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument: io.contentDocument.document } } } catch(e) { jQuery.handleError(s, xml, null, e) } if (xml || isTimeout == "timeout") { requestDone = true; var status; try { status = isTimeout != "timeout" ? "success": "error"; if (status != "error") { var data = jQuery.uploadHttpData(xml, s.dataType); if (s.success) { s.success(data, status) } if (s.global) { jQuery.event.trigger("ajaxSuccess", [xml, s]) } } else { jQuery.handleError(s, xml, status) } } catch(e) { status = "error"; jQuery.handleError(s, xml, status, e) } if (s.global) { jQuery.event.trigger("ajaxComplete", [xml, s]) } if (s.global && !--jQuery.active) { jQuery.event.trigger("ajaxStop") } if (s.complete) { s.complete(xml, status) } jQuery(io).unbind(); setTimeout(function() { try { jQuery(io).remove(); jQuery(form).remove() } catch(e) { jQuery.handleError(s, xml, null, e) } }, 100); xml = null } }; if (s.timeout > 0) { setTimeout(function() { if (!requestDone) { uploadCallback("timeout") } }, s.timeout) } try { var form = jQuery("#" + formId); jQuery(form).attr("action", s.url); jQuery(form).attr("method", "POST"); jQuery(form).attr("target", frameId); if (form.encoding) { jQuery(form).attr("encoding", "multipart/form-data") } else { jQuery(form).attr("enctype", "multipart/form-data") } jQuery(form).submit() } catch(e) { jQuery.handleError(s, xml, null, e) } jQuery("#" + frameId).load(uploadCallback); return { abort: function() {} } }, uploadHttpData: function(r, type) { var data = !type; data = type == "xml" || data ? r.responseXML: r.responseText; if (type == "script") { jQuery.globalEval(data) } if (type == "json") { ////////////以下为新增代码/////////////// data = r.responseText; var start = data.indexOf(">"); if(start != -1) { var end = data.indexOf("<", start + 1); if(end != -1) { data = data.substring(start + 1, end); } } ///////////以上为新增代码/////////////// eval("data = " + data) } if (type == "html") { jQuery("