如果處理這個upload ajax請求的action配置了json的result type,請注意,在隱藏的表單向隱藏的iframe提交後,返回的json數據會導致彈出一個下載框(提示下載返回的json數據)----- 這和純ajax請求不同,純ajax請求會自動將json數據分析成object。
所以,解決方法是:
<result name="input" type="json">
<param name="contentType">text/plain</param>
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">actionErrors\[\d+\]\..*</param>
</result>
<result type="json">
<param name="contentType">text/plain</param>
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">actionMessages\[\d+\]\..*</param>
</result>
將json類型的result中加入contentType參數,強制指定使用text/plain的類型,這樣當隱藏表單提交後,就不會提示下載,而正常觸發form的onload事件了。
在使用jquery的一些ajaxupload插件的時候換了好幾個插件都出現這個問題,最後才發現因爲這個。
最後推薦一個用iframe/form方式實現的ajaxupload控件(不是jquery插件,但是沒有衝突):
http://www.diepbachduong.com/index.php/play/img