利用ajax对页面局部刷新

来源:互联网 发布:php 通过域名获取ip 编辑:程序博客网 时间:2024/06/05 06:45

一、jsp页面代码

 </head>
 
  <body>
    <input type="button" value="显示" /><br/>
    <div id= "opt_area" >
     
    </div>
  </body>
</html>

二、show.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<ul>
 <c:forEach var="temp" items="${allNews }">
  <li>${temp.title }<li>
 </c:forEach>
</ul>

三、js代码(注释部分请忽略)

<script type="text/javascript">
  var jq = $.noConflict();
  jq(function() {
   jq("input[type='button']").click(function() {
    jq.ajax({
     url:"${pageContext.request.contextPath }/NewsServlet",
     type:"POST",
     data:"opr=listHtml",
     dataType:"html",//注意返回类型
     success:function(data) {
     //alert(data.List.list.length);
      /* var jqnewsList = jq("#opt_area>ul").empty();
       for(var i = 0; i < data.List.list.length; i ++) {
       jqnewsList.append("<li>"+data.List.list[i].title+"<li>");
       }  */
      jq("#opt_area").html(data);//需要刷新的内容
     }
    
    });
    
   });
  
  });
 </script>

四、servlet代码(注释部分请忽略)

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  String opr = request.getParameter("opr");
  List<Object> list = new ArrayList();
  List<News> allNews = null;
  Map<String, Object> map = new HashMap();
  Map<String, Object> map1 = new HashMap();
  String str="";
  if("listHtml".equals(opr)) {
   NewsService newsService = new NewsServiceImpl();
   allNews = newsService.getAllNews();
   /*//str += this.createJson(allNews);
   for(int i = 0; i < allNews.size(); i ++) {
    str+="<li>"+allNews.get(i).getTitle()+"<li>";
   }
   list.addAll(allNews);
   //String strList = JSON.toJSONString(list, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteNullListAsEmpty);
   //map.put("list", list);
   
   str=JSON.toJSONString(list, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullStringAsEmpty);
   JSONArray parseArray = JSONArray.parseArray(str);
   JSONArray jsonArray = new JSONArray(list);
   map1.put("list", jsonArray);
   map.put("List", map1);
   JSONObject JSONOBJ = new JSONObject(map);
   out.print(JSONOBJ);*/
  }
  request.setAttribute("allNews", allNews);
  request.getRequestDispatcher("/show.jsp").forward(request, response);//这个地方很关键,为了避免编写大量构建HTML内容代码,可以将数据发送至专门展示页面生成的页面即show.jsp

show.jsp中仅包含客户端展示数据所需的<li>元素,没有其他页面结构,产生的内容将作为响应发送会客户端,直接嵌入页面中使用
  out.close();
 }

五、当在页面中单击显示按钮时会出现相应内容



原创粉丝点击