如果处理这个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