在Struts2+Ajax实现文件上传时遇到了报错:No result defined for action com.excel.ReadExcel and result input。
出现问题原因:前端使用Ajax传值时使用的是form表单的submit,而后台返回时直接返回了字符串,错误代码如下:
1.Ajax 提交表单。
// An highlighted block
$('#form_s').form('submit',{
url : "test_excel.action",
onSubmit:function(){
},
success:function(data){
alert(data);
}
});
2.test_excel.action对应的类
// An highlighted block
public void write() throws IOException {
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse resp = ServletActionContext.getResponse();
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
System.out.println("excel1:"+excel);
out.write("0");//错误之处
out.flush();
out.close();
}
解决方法:将返回给前端Ajax的值复制给字符串变量,然后返回此字符串变量。修改后代码如下。
1.Ajax 提交表单。
// An highlighted block
$('#form_s').form('submit',{
url : "test_excel.action",
onSubmit:function(){
},
success:function(data){
alert(data);
}
});
2.test_excel.action对应的类。
// An highlighted block
public void write() throws IOException {
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse resp = ServletActionContext.getResponse();
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
System.out.println("excel1:"+excel);
String str="0";//修改之处
out.write(str);
out.flush();
out.close();
}
本文解决了一个在使用Struts2结合Ajax进行文件上传时遇到的问题:Noresultdefinedforaction...。问题源于后端直接返回字符串而非正确的响应格式。通过将返回值赋给字符串变量并正确返回,解决了前端Ajax无法解析返回结果的问题。

580

被折叠的 条评论
为什么被折叠?



