在网上看了很多关于Struts2+jquery+ajaxfileupload无刷新上传图的!但是遇到一个问题就是在我在jquery中ajaxFileUpload方法去无刷新上传!
返回json数据的时候老是出问题!说是在contentType参数是一定要有的,否则浏览器总是提示将返回的JSON结果另存为文件,不会交给ajaxfileupload处理。这是因为struts2 JSONPlugin默认的contentType为application/json,而ajaxfileupload则要求为text/html。
所以在struts.xml中去配置
<package namespace="/upload" name="uploadprductlogoaction" extends="json-default">
<action name="uploadLogoAction" class="merchantProductLogoAction"
method="uploadProductLogo">
<result type="json" name="success">
<param name="contentType">
text/html
</param>
</result>
<result type="json" name="error">
<param name="contentType">
text/html
</param>
</result>
</action>
</package>
在ajaxFileUpload方法返回json
数据
$.ajaxFileUpload ({
url:"uploadLogoAction.action",
secureuri:false,
fileElementId:"productLogo",
dataType:"json",
success:function(data,status){
alert(data);
},error:function(data,status,e){
alert(e);
}
});
但是还是出现上一个问题后查看说ajaxFileUpload返回的必须只有text或xml格式的!我在ajaxFileUpload方法更改成
$.ajaxFileUpload ({
url:"uploadLogoAction.action",
secureuri:false,
fileElementId:"productLogo",
dataType:"text",
success:function(data,status){
alert(data);
},error:function(data,status,e){
alert(e);
}
});
在struts.xml中如下写
<package namespace="/upload" name="uploadprductlogoaction" extends="struts-default">
<action name="uploadLogoAction" class="merchantProductLogoAction"
method="uploadProductLogo">
</action>
</package>
但是这样在ajaxFileUpload返回的是一个text格式的!在根据data = jQuery.parseJSON(jQuery(data).text());这样data就是json格式的!
这样我要的返回json就正确的得到了!希望对与我遇到同样问题的朋友有些帮助.