Jquery AjaxFileUpload.js 上傳檔案 所遇問題解決辦法,ajaxfileupload.js

來源:互聯網
上載者:User

Jquery AjaxFileUpload.js 上傳檔案 所遇問題解決辦法,ajaxfileupload.js

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">匯入 AjaxFileUpload.js 檔案</span>

js代碼

$.ajaxFileUpload({        url: 'upload',//處理圖片指令碼        secureuri : false,        fileElementId : 'uploadImg',//file控制項id        data: {photoType: photoType},//參數        dataType : 'json', //參數大寫  否則Google瀏覽器可能報錯        success : function (data,status){            data=jQuery.parseJSON(data);        $("#hideImgPath").val(data.filePath);alert("上傳圖片成功!");        },        error: function(data, status, e){            alert("上傳圖片失敗!請稍後重試!");        }});

html代碼

<span class="d"><input type="file" id="uploadImg" name="uploadImg" value="" /><input type="button" id="uploadImgButton" onclick="uploadSaveImg();" value="確定上傳" /><input type="hidden" value="" id="hideImgPath" name="hideImgPath"/></br>格式一般為GIF或者JPEG,大小100*100像素;</span>


所遇問題1:  在使用springMVC 架構時 ,  IE瀏覽器會將返回的資料直接下載  

解決辦法:在springMVC設定檔中  添加如下配置資訊:

<!-- 避免IE執行AJAX時,返回JSON出現下載檔案 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean>

同時設定返回資料的類型: response.setContentType("text/plain;charset=UTF-8");


所遇問題2:返回的資料中帶有<pre> 標籤   

解決辦法: 將AjaxFileUpload.js檔案中     eval( "data = " + data );   改成   data = jQuery.parseJSON(jQuery(data).text());

此時如果在頁面上還是無法解析時,請再將 返回資料轉成Json 一遍   data=jQuery.parseJSON(data);    

所遇問題3:  在使用springMVC時   後台接收不到 前台的 File   時  報錯:

nested exception is java.lang.NoClassDefFoundError:org/apache/commons/io/output/DeferredFileOutputStreamat 
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)


java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)

解決辦法:   1、 添加 commons-io-1.3.1.jar  包 ,此包是上傳所依賴的包   。

2、如果添加此包後還是提示找不到本包    原因可能有兩點:①、tomcat  沒有載入本包,此時請到tomcat下 將此包勾選上 。   ②如果出現本包衝突時 將tomcat下

的同名jar包 刪掉





使用jquery的ajaxfileuploadjs與struts2無重新整理上傳檔案出錯

getXXX方法是從session中取參數值,從你貼出的代碼來看 沒有涉及到這塊,所以我覺得你要是用System.out.println("userIcon:" + getId_userIcon()); 取不到任何id·
個人淺見~
 
引用(ajaxfileuploadjs) ajaxfileuploadjs報這錯jQueryhandleError is not a function

在做ajaxFileUpload時,我也遇到這個問題,同時還有其它的問題,用了一下午的時間解決了:
問題1:如樓主所說,jQuery.handleError is not a function 原因是,經測試handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都沒有這個函數了,因此在1.4.2中將這個函數複製到了ajaxFileUpload.js中,問題解決
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
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] );
}
},
問題2:一直得到error ,無法執行指定的success方法。通過追蹤ajaxFileUpload的執行過程發現,在調用它自身的uploadHttpData函數時,當執行if(type=="json") eval("data = "+data);
會拋出異常,導致在處理異常的時候將status = "error" 因此一直執行error方法。
上網查詢,得知eval函數是用來執行一段js代碼,而並不是如我所想的反解json串
eval("data = "+data);的意思是 將data 賦值給 data參數 ,但是當我返回給頁面的是一個簡單的字串,比如"OK" ,時,這樣寫就拋出異常。最後改為 eval("data = \" "+data+" \" ");即將返回的資料用雙引號引起來當作字串,然後賦給 data 。終於成功了。。。
貼出來,希望可以協助到其他同樣遇到這個問題的人。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.