ajax提交表单上传文件到servlet中保存如何才能不刷新页面?
表单:<formid="fileForm"action="/wx2.0/FileUploadServlet"method="post"enctype="multipart...
表单:
<form id="fileForm" action="/wx2.0/FileUploadServlet" method="post" enctype="multipart/form-data" target="_parent">
<input type='button' class='btn' value='添加图片' />
<input type="file" id="viewFiles" class="file" name="files" onChange="onInputFileChange()" size="28"/>
</form>
ajax代码:
$.ajax({
type: "POST",
url:$("#fileForm").submit(),
data:$("#fileForm").serialize(),//
dataType:"text",
success: function(data) {
alert("ok\n"+data);
return false;
},
error: function(data) {
alert("fail\n"+data);
return false;
}
});
servlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
FileUpload fu=new FileUpload();
fu.setMap(request);//解析request
Map<String,FileItem> files=fu.getFiles();
String fileName =fu.getFileName(files.get("files"));
File file=new File(this.getServletContext().getRealPath("upload\\"+fileName));
try {
files.get("files").write(file);
out.println("<script>alert('上传成功!');return false;</script>");
} catch (Exception e) {
e.printStackTrace();
out.println("上传失败!");
}
}
以上代码已经可以实现文件上传,但是会刷新页面。因为ajax中的url提交了表单,如果要不刷新页面该如何? 展开
<form id="fileForm" action="/wx2.0/FileUploadServlet" method="post" enctype="multipart/form-data" target="_parent">
<input type='button' class='btn' value='添加图片' />
<input type="file" id="viewFiles" class="file" name="files" onChange="onInputFileChange()" size="28"/>
</form>
ajax代码:
$.ajax({
type: "POST",
url:$("#fileForm").submit(),
data:$("#fileForm").serialize(),//
dataType:"text",
success: function(data) {
alert("ok\n"+data);
return false;
},
error: function(data) {
alert("fail\n"+data);
return false;
}
});
servlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
FileUpload fu=new FileUpload();
fu.setMap(request);//解析request
Map<String,FileItem> files=fu.getFiles();
String fileName =fu.getFileName(files.get("files"));
File file=new File(this.getServletContext().getRealPath("upload\\"+fileName));
try {
files.get("files").write(file);
out.println("<script>alert('上传成功!');return false;</script>");
} catch (Exception e) {
e.printStackTrace();
out.println("上传失败!");
}
}
以上代码已经可以实现文件上传,但是会刷新页面。因为ajax中的url提交了表单,如果要不刷新页面该如何? 展开
1个回答
展开全部
更多追问追答
追问
你给的方法是可以实现无刷新,但是这样的话 ajax中怎么接收返回值呢?
追答
ajax接收返回值是通过回调函数
out.write("<script type='text/javascript'>parent.callback('123')</script>" );
这里面的callback就是自己定义的回调函数了。parent是iframe的父页面,也就是当前页面,里面的123是你要返回的值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询