spring-mvc使用ajaxFileUpload上传文件总是进入error方法
2016-09-19 00:10
811 查看
改变其中的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 context
if (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 html
if (type == "html")
jQuery("<div>").html(data).find('script').remove();
return data;
},
另外附上源代码:
uploadHttpData : function(r, type) {
var data = !type;
data = type == "xml" || data ? r.responseXML : r.responseText;
// If the type is "script", eval it in global context
if (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 html
if (type == "html")
jQuery("<div>").html(data).find('script').remove();
return data;
},
另外附上源代码:
jQuery.extend({ createUploadIframe : function(id, uri) { // create frame var 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 form var formId = 'jUploadForm' + id; var fileId = 'jUploadFile' + id; var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); // Handle files if (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 data if (data) { for ( var i in data) { jQuery( '<textarea name="' + i + '" style="display:none;">' + data[i] + '</textarea>').appendTo(form); } } // Set attributes jQuery(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 timeout 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; // Watch for a new set of requests if (s.global && !jQuery.active++) { jQuery.event.trigger("ajaxStart"); } var requestDone = false; // Create the request object var xml = {}; if (s.global) jQuery.event.trigger("ajaxSend", [ xml, s ]); // Wait for a response to come back var 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 // notmodified if (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 data if (s.success) s.success(data, status); // Fire the global callback 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); } // 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(); setTimeout(function() { try { jQuery(io).remove(); jQuery(form).remove(); } catch (e) { jQuery.handleError(s, xml, null, e); } }, 100); xml = null; } }; // Timeout checker if (s.timeout > 0) { setTimeout(function() { // Check to see if the request is still happening 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 the type is "script", eval it in global context if (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 html if (type == "html") jQuery("<div>").html(data).find('script').remove(); return data; }, handleError : function(s, xml, status, e) { // If a local callback was specified, fire it if (s.error) s.error(xml, status, e); // Fire the global callback if (s.global) jQuery.event.trigger("ajaxError", [ xml, s, e ]); } });
相关文章推荐
- struts2 使用ajaxfileupload.js上传文件,处理返回是总是进入Error函数
- ajaxFileUpload进行文件上传时,总是进入error
- 上传文件总结--使用springMVC+ajaxfileupload.js
- 解决使用ajaxFileUpload上传控件出现的问题:回调函数总是进入error或success
- 使用springMVC + ajaxfileupload上传文件
- springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
- SpringMVC+ajaxfileupload.js实现文件无刷新上传
- 文件上传ajaxFileUpload.js使用方法 包含后台接收方法
- springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)
- springmvc + ajaxfileupload 实现异步上传文件(图片)
- Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件
- ajaxfileupload上传文件成功后总是指向error
- SpringMVC+ajaxFileUpload 上传文件
- Spring MVC+ajaxfileupload实现文件上传下载
- Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件
- 使用ajaxfileupload.js上传文件成功之后,不走success的解决方法
- SpringMVC + ajaxfileupload的多文件上传
- spring mvc ajaxfileupload文件上传返回json下载问题
- springmvc + ajaxFileUpload多文件上传
- ajaxfileupload.js+SpringMVC实现文件上传