spring-mvc使用ajaxFileUpload上传文件总是进入error方法

来源:互联网 发布:猫和老鼠胡桃夹子知乎 编辑:程序博客网 时间:2024/05/15 20:43

改变其中的js部分:

uploadHttpData : function(r, type) {var data = !type;data = type == "xml" || data ? r.responseXML : r.responseText;// If the type is "script", eval it in global contextif (type == "script")jQuery.globalEval(data);// Get the JavaScript object, if JSON is used.if (type == "json")// eval( "data = " + data );// data会被加<pre>导致AJAX不走success方法,改为如下形式// eval("data = \" "+data+" \" ");data = jQuery.parseJSON(data);// evaluate scripts within htmlif (type == "html")jQuery("<div>").html(data).find('script').remove();return data;},


另外附上源代码:
jQuery.extend({createUploadIframe : function(id, uri) {// create framevar frameId = 'jUploadFrame' + id;var iframeHtml = '<iframe id="'+ frameId+ '" name="'+ frameId+ '" style="position:absolute; top:-9999px; left:-9999px"';if (window.ActiveXObject) {if (typeof uri == 'boolean') {iframeHtml += ' src="' + 'javascript:false' + '"';} else if (typeof uri == 'string') {iframeHtml += ' src="' + uri + '"';}}iframeHtml += ' />';jQuery(iframeHtml).appendTo(document.body);return jQuery('#' + frameId).get(0);},createUploadForm : function(id, fileElementId, data) {// Create formvar formId = 'jUploadForm' + id;var fileId = 'jUploadFile' + id;var form = jQuery('<form  action="" method="POST" name="'+ formId + '" id="' + formId+ '" enctype="multipart/form-data"></form>');// Handle filesif (typeof (fileElementId) == "string") {fileElementId = [ fileElementId ];}for ( var i in fileElementId) {var oldElement = jQuery('#' + fileElementId[i]);var newElement = jQuery(oldElement).clone();jQuery(oldElement).attr('id', fileId);jQuery(oldElement).before(newElement);jQuery(oldElement).appendTo(form);}// Handle dataif (data) {for ( var i in data) {jQuery('<textarea name="' + i+ '" style="display:none;">' + data[i]+ '</textarea>').appendTo(form);}}// Set attributesjQuery(form).css('position', 'absolute');jQuery(form).css('top', '-1200px');jQuery(form).css('left', '-1200px');jQuery(form).appendTo('body');return form;},ajaxFileUpload : function(s) {// introduce global settings, allowing the client to modify them// for all requests, not only timeouts = 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;// Watch for a new set of requestsif (s.global && !jQuery.active++) {jQuery.event.trigger("ajaxStart");}var requestDone = false;// Create the request objectvar xml = {};if (s.global)jQuery.event.trigger("ajaxSend", [ xml, s ]);// Wait for a response to come backvar uploadCallback = function(isTimeout) {var io = document.getElementById(frameId);try {if (io.contentWindow) {xml.responseText = io.contentWindow.document.body ? jQuery('<div>').html(io.contentWindow.document.body.innerHTML).text(): null;xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument: io.contentWindow.document;} else if (io.contentDocument) {xml.responseText = io.contentWindow.document.body ? jQuery('<div>').html(io.contentWindow.document.body.innerHTML).text(): 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";// Make sure that the request was successful or// notmodifiedif (status != "error") {// process the data (runs the xml through// httpData regardless of callback)var data = jQuery.uploadHttpData(xml,s.dataType);// If a local callback was specified, fire it// and pass it the dataif (s.success)s.success(data, status);// Fire the global callbackif (s.global)jQuery.event.trigger("ajaxSuccess", [ xml,s ]);} elsejQuery.handleError(s, xml, status);} catch (e) {status = "error";jQuery.handleError(s, xml, status, e);}// The request was completedif (s.global)jQuery.event.trigger("ajaxComplete", [ xml, s ]);// Handle the global AJAX counterif (s.global && !--jQuery.active)jQuery.event.trigger("ajaxStop");// Process resultif (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;}};// Timeout checkerif (s.timeout > 0) {setTimeout(function() {// Check to see if the request is still happeningif (!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 the type is "script", eval it in global contextif (type == "script")jQuery.globalEval(data);// Get the JavaScript object, if JSON is used.if (type == "json")// eval( "data = " + data );// data会被加<pre>导致AJAX不走success方法,改为如下形式// eval("data = \" "+data+" \" ");data = jQuery.parseJSON(data);// evaluate scripts within htmlif (type == "html")jQuery("<div>").html(data).find('script').remove();return data;},handleError : function(s, xml, status, e) {// If a local callback was specified, fire itif (s.error)s.error(xml, status, e);// Fire the global callbackif (s.global)jQuery.event.trigger("ajaxError", [ xml, s, e ]);}});


1 0
原创粉丝点击