jsp+ajax如何实现无刷新上传文件

这篇文章主要为大家展示了“jsp+ajax如何实现无刷新上传文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jsp+ajax如何实现无刷新上传文件”这篇文章吧。

创新互联公司专注于企业成都营销网站建设、网站重做改版、枣庄网站定制设计、自适应品牌网站建设、html5成都做商城网站、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为枣庄等各大城市提供网站开发制作服务。

具体如下:

列表页:selectaddress.jsp
js页:ajax_edit.js
jsp处理页:editaddress.jsp
上传工具类:UploadUtil.java

jsp+ajax如何实现无刷新上传文件

思想:由于安全问题,javascript操纵不了文件, 导致ajax不能动态上传文件,所以选择了iframe,

列表页把form表单提交到一个隐式的iframe里面,设置表单的属性

复制代码 代码如下:

enctype='multipart/form-data'  target='hidden_frame'


然后,处理页处理后返回

复制代码 代码如下:

out.println('');

列表页执行回调函数!

selectaddress.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ page import="com.wap3.navigater.service.*" %>
<%@ page import="com.wap3.navigater.dao.*" %>
<%@ page import="com.wap3.navigater.pojo.*" %>
<%@ page import="com.wap3.navigater.util.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>













Insert title here

 @import "inc/jquery.datepick.css";


var $imgthis;
 $(function(){
  var oldValue;
  $(".package_list .edit").bind("dblclick",function(){
   oldValue = $(this).text();
   $(this).ajax_edit("editaddress.jsp",oldValue);
  });
  $(".package_list .edit_img").bind("dblclick",function(){ //
   oldValue = $(this).html();
   $imgthis = $(this);
   $(this).parents("tr.package_list").siblings(".package_list").find(":input.cancel").trigger("click");
   $(this).ajax_edit_img("editaddress.jsp",oldValue);
  });
  $(".package_list .edit :input[type!=file]:visible").live("blur",function(){
   $(this).ajax_handle("editaddress.jsp?action=edit",oldValue);
  });
  $("#editcategoryName").live("change",function(){
   $(this).ajax_handle("editaddress.jsp?action=edit",oldValue);
  });
  $("#del").click( function () {
   if($(":checkbox.urlid:checked").size()>0){
    var result = confirm("不可恢复的操作:确定要吗?"+ '\n' +"提示:如果删除大类会删除大类及下面的子类!!!");
    if (result) {
     var url = location.href;
     alert(url);
     return ;
     $(".main_table").wrap("");
     $("#selectAddressForm").submit();
    }
   }else{
    alert("请选择要删除的项目!");
    return false;
   }
  });
 });
 function callback(msg) //处理JSP回调 过来的参数
 {
  $imgthis.html("");
 }



 <%
  String action = ParameterUtil.getStringParameter(request,"action","");
  FriendurlDao friendurlDao = new IbatisFriendurlDao();
  if("del".equals(action)){
   int[] urlids = ParameterUtil.getIntArrayParams(request,"urlid");
   for(int urlid : urlids){
    friendurlDao.deleteFriendurlByP(urlid);
   }
  }
  String navigaterPage = request.getRequestURL().toString();
  if(request.getQueryString()!= null){
   navigaterPage += "?"+request.getQueryString();
  }
  int categoryId = ParameterUtil.getIntParameter(request,"categoryId",0);
  if(categoryId == 0){
   response.sendRedirect("selectcategory.jsp");
   return;
  }
  int pageSize = ParameterUtil.getIntParameter(request,"pageSize",10);
  int pageNo = ParameterUtil.getIntParameter(request,"pageNo",1);
  String orderBy = ParameterUtil.getStringParameter(request,"orderBy","sequence");
  int ascOrDesc = ParameterUtil.getIntParameter(request,"ascOrDesc",0);
  CategoryDao categoryDao = new IbatisCategoryDao();
  Category category = categoryDao.selectCategoryByP(categoryId);
  String categoryName = category.getCategoryName();
  Friendurl friendurl = new Friendurl();
  friendurl.setCategoryId(categoryId);
  friendurl.addOrderBy(orderBy,ascOrDesc);
  List friendurlList = friendurlDao.selectFriendurlByE(friendurl);
   //分页
  int totallpage = (int) Math.ceil(((double) friendurlList .size() * 1.0D)/ (double) pageSize);
  pageNo =pageNo <= 0 ? 1 : pageNo;
  pageNo =pageNo > totallpage ? totallpage : pageNo;
  DataPageUtil datePage = new DataPageUtil(friendurlList ,friendurlList .size(),pageSize, pageNo);
  boolean hasPrerPage = datePage.hasPrevPage();
  boolean hasNextPage= datePage.hasNextPage();
  int curpageNo = datePage.getPageNo();
  int pageCount = datePage.getPageCount();
  friendurlList = DataPageUtil.subList(friendurlList, pageSize, pageNo);
  if(friendurlList == null && friendurlList.size()<=0) {
   out.println("没有您需要的数据");
  }else{
  %>
  <%@include file="inc/header.jsp" %>
 
  
   
    
     条目列表
    
    
     
      全选
      
     
     站点名称
     站点别名
     归类
     公司地址
     文字链接
     图片链接
     描述
     有效开始时间
     有效结束时间
     电话
     位置排序
     推荐序号
    
    <%
     for(Friendurl friendurlTemp:friendurlList) {
      int urlId = friendurlTemp.getUrlid();
      String siteName = friendurlTemp.getSitename();
      String alias = friendurlTemp.getAlias();
      String address = friendurlTemp.getAddress();
      String texturl = friendurlTemp.getTexturl();
      String imageurl = friendurlTemp.getImageurl();
      String description = friendurlTemp.getDescription();
      Date validbegintime = friendurlTemp.getValidbegintime();
      Date validendtime = friendurlTemp.getValidendtime();
      String mobile = friendurlTemp.getMobile();
      int sequence = friendurlTemp.getSequence();
      int filter = friendurlTemp.getFilter();
     %>
    
      />
     <%=siteName %>
     <%=alias %>
     <%=categoryName%>
     <%=address %>
     <%=texturl%>
     ' class='logo' title='<%=imageurl%>'/>
     <%=description%>
     <%=validbegintime == null || "".equals(validbegintime)? "--:--" : TimeUtil.date2Str(validbegintime)%>
     <%=validendtime == null || "".equals(validendtime)? "--:--" : TimeUtil.date2Str(validendtime)%>
     <%=mobile%>
     <%=sequence%>
     <%=filter%>
    
    <%
     }
     %>
    
     
     提示:双击选框修改属性值
    
   
  
  <%@ include file="inc/pagination.jsp"%>  
 <%   }   %>

editaddress.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ page import="com.wap3.navigater.util.*" %>
<%@ page import="com.wap3.navigater.service.*" %>
<%@ page import="com.wap3.navigater.pojo.*" %>
<%@ page import="com.wap3.navigater.dao.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
 <%
  String target = ParameterUtil.getStringParameter(request,"target","");
  String action = ParameterUtil.getStringParameter(request,"action","");
  if(!"".equals(target) && target != null && "edit".equals(action)){
   int categoryId = 0;
   CategoryDao categoryDao = null;
   int urlid=0,status=0,sequence=0,filter=0;
   String sitename=null,alias=null,texturl=null,imageurl=null,description=null,mobile=null;
   Date validbegintime=null,validendtime=null;
   if("imageurl".equals(target)){
    System.out.println("图片上传");
    UploadUtil.upload(request, response);
    String imageurlpath = (String) request.getAttribute("imageurlpath");
    urlid = Integer.parseInt((String)request.getAttribute("urlid"));
    imageurl = (String)request.getAttribute("imageurlpath");
   }else{
    if("categoryName".equals(target)){
     String categoryName = ParameterUtil.getStringParameter(request,"categoryName","");
     Category category = new Category();
      category.setCategoryName(categoryName);
     categoryDao = new IbatisCategoryDao();
     Category category2 = categoryDao.selectCategoryByE(category).get(0);
      categoryId = category2.getCategoryId();
    }else{
     categoryId = ParameterUtil.getIntParameter(request,"categoryId",0);
    }
     urlid = ParameterUtil.getIntParameter(request,"urlid",0);
     sitename = ParameterUtil.getStringParameter(request,"sitename","");
     alias = ParameterUtil.getStringParameter(request,"alias","");
     texturl = ParameterUtil.getStringParameter(request,"texturl","");
     imageurl = ParameterUtil.getStringParameter(request,"imageurl","");
     description = ParameterUtil.getStringParameter(request,"description","");
     status = ParameterUtil.getIntParameter(request,"status",0);
     sequence = ParameterUtil.getIntParameter(request,"sequence",0);
     filter = ParameterUtil.getIntParameter(request,"filter",0);
     mobile = ParameterUtil.getStringParameter(request,"mobile","");
     validbegintime = ParameterUtil.getDateParameter(request,"validbegintime");
     validendtime = ParameterUtil.getDateParameter(request,"validendtime");
   }
   Calendar beginDay=Calendar.getInstance();
   Friendurl friendurl = new Friendurl();
    friendurl.setUrlid(urlid);
    friendurl.setSitename(sitename);
    friendurl.setDescription(description);
    friendurl.setTexturl(texturl);
    friendurl.setImageurl(imageurl);
    friendurl.setAlias(alias);
    friendurl.setSequence(sequence);
    friendurl.setMobile(mobile);
    friendurl.setCategoryId(categoryId);
    friendurl.setStatus(status);
    friendurl.setValidbegintime(validbegintime);
    friendurl.setValidendtime(validendtime);
    friendurl.setFilter(filter);
   FriendurlDao friendurlDao = new IbatisFriendurlDao();
   friendurlDao.updateFriendurlByP(friendurl);
   Friendurl friendurl2 = friendurlDao.selectFriendurlByE(friendurl).get(0);
   if(friendurl2 != null){
    String methodName = "get" + target.substring(0,1).toUpperCase()+target.substring(1);
    if(target.endsWith("time")){
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
     out.println(TimeUtil.date2Str(((Date)(friendurl2.getClass().getMethod(methodName,new Class[]{}).invoke(friendurl2,new Object[]{})))));
    }else if("categoryName".equals(target)){
     out.println(categoryDao.selectCategoryByP(friendurl2.getCategoryId()).getCategoryName());
    }else if("imageurl".equals(target)){
     // 无刷新关键的步骤,让iframe的父辈body执行callback这个函数
     out.println("");
    }else{
     out.println(friendurl2.getClass().getMethod(methodName,new Class[]{}).invoke(friendurl2,new Object[]{}));
    }
   }else{
    out.println("更新失败");
   }
  }
%>

ajax_edit.js

(function(){
  $.fn.extend({
   ajax_edit:function(str,oldValue){
    return this.each(function(){
     $this = $(this);
     var id;
     var nameId = $this.attr("class").split(" ")[1];
     var idName = $this.parents("tr.package_list").find("td:first-child :input[type=checkbox]").attr("class").split(" ")[1];
     id = $this.siblings("."+idName+"_td").find("input").val();
     if(nameId == "categoryName" && str == "editaddress.jsp"){
      $this.load("categorylist.jsp",{'oldValue':oldValue,'urlid':id});
     }else{
      $this.html("");
      $this.find(":input:last").focus();
     }
    })
   },
  ajax_edit_img:function(str,oldValue){ //处理图片上传AJAX 关键的一步form表格里的 target='hidden_frame'提交到ID为hidden_frame的iframe里面
   return this.each(function(){
    var $this = $(this);
    var nameId = $this.attr("class").split(" ")[1];
    var idName = $this.parents("tr.package_list").find("td:first-child :input[type=checkbox]").attr("class").split(" ")[1];
    var id = $this.siblings("."+idName+"_td").find("input").val();
    var $imgForm = $("");
    $this.html($imgForm);
    $this.find(":input:last").focus();
    $imgForm.find(":input[type=file]").bind("change",function(){
     $(this).fileTypeJudge("photo");
    })
    $imgForm.find(":input.ok").bind("click",function(){
     var $button = $(this);
     if($imgForm.find(":input[type=file]").val()==''){
      alert("请上传图片!");
      return false;
     }
     $button.attr("disabled",true);
     $("#selectaddressForm_img").submit();
    })
    $imgForm.find(":input.cancel").bind("click",function(){
     $(this).parents(".edit_img").html(oldValue);
    });
   })
  },
  ajax_handle:function(str,oldValue){
    return this.each(function(){
     var $this = $(this);
     setTimeout(function(){
     if(!$("div").hasClass("datepick-control") || !$("div .datepick-control").is(":visible")){
      if(oldValue != $this.val() && $this.val() !="" ){
         $.post(
          str,$("#selectaddressForm").serialize(),
          function(data){
           $this.parents(".edit").text(data.trim()).css("color","red");
          }
         )
      }else{
       $this.parents(".edit").text(oldValue);
      }
     }
     },1000);
    })
   }
  })
})(jQuery)

以上是“jsp+ajax如何实现无刷新上传文件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站标题:jsp+ajax如何实现无刷新上传文件
链接分享:http://cdiso.cn/article/gspcic.html

其他资讯