我使用AjaxFileUpload(http://www.phpletter.com/Our-Projects/AjaxFileUpload/)上传文件并在struts2中获取json结果类型响应(code.google.struts2jsonresult.JSONResult)
但浏览器始终会弹出下载窗格,请给我一些建议,在此先感谢
这是我在struts.xml中的配置:
......
<result-type name="json" class="code.google.struts2jsonresult.JSONResult">
............
<action name="doGetList" method="doGetList"
class="main.java.GetListAction">
<result type="json">
<param name="target">jsonObject</param>
<param name="deepSerialize">true</param>
<param name="patterns"> -*.class</param>
</result>
</action>
和js客户:
function ajaxFileUpload(){
$("#loading").ajaxStart(function(){
$(this).show();
}).ajaxComplete(function(){
$(this).hide();
});
$.ajaxFileUpload
(
{
url:'doGetList.do',
secureuri:false,
fileElementId:'uploadfile',
dataType: 'json',
success: function (data, status)
{
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}
else
{
alert(data.msg);
}
}
},
error: function (data, status, e)
{
alert(e);
alert(data.records);
}
}
)
return false;
}
最佳答案
我在红宝石上遇到了同样的问题。
使用此代码时,我注意到返回标头为“ Content-Type:apllication / json”。
render :json => {:error => "", :msg => data}
然后我尝试使用以下内容代替...
render :text => {:error => "", :msg => data}.to_json
之后,将返回标头更改为“ Content-Type:text / html”,然后问题解决了。