Ajax就是web頁面的一種非同步傳輸方法。不論它在怎麼牛,無非也是頁面發送請求,服務端處理請求,所以不管是Servlet 還是Spring MVC ,對與頁面發送非同步傳輸請求來說沒什麼區別。所以頁面指令碼該怎麼寫還是怎麼寫,而服務端也是一樣。只不過服務端不用返回頁面,所以處理請求的方法的傳回值為null即可,或者不要傳回值。而方法內容可以按照Servlet的寫法來寫,即用PrintWriter來輸出字串或XML文本。。。
頁面代碼如下,這裡使用的是jQuery:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>helloworld</title><script type="text/javascript" src="/spring_mvc/js/jquery.js"></script><script type="text/javascript">$(function(){$("#testButton").click(function(){var $a = $(this);$.ajax({url:"/spring_mvc/testAjax.do",type:'post',data:'name=admin&password=123456',dataType:'html',success:function(data,status){if(status == "success"){var objs = jQuery.parseJSON(data);var str = "";for(var i=0;i<objs.length;i++){str = str + objs[i].activityName+" ";}$("#content").html(str);}},error:function(xhr,textStatus,errorThrown){}});});});</script></head><body><button id="testButton">非同步傳輸</button><div id="content"></div></body></html>
服務端代碼如下:
public class TestAjaxAction implements Controller {public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {response.setCharacterEncoding("UTF-8");String name = request.getParameter("name");String password = request.getParameter("password");System.out.println(name+" : "+password);PrintWriter out = response.getWriter();List<Map<String,String>> list = new ArrayList<Map<String,String>>();Map<String,String> m1 = new HashMap<String,String>();m1.put("activityId", "000001");m1.put("activityName", "阿斯蒂芬1");Map<String,String> m2 = new HashMap<String,String>();m2.put("activityId", "000002");m2.put("activityName", "阿斯蒂芬2");Map<String,String> m3 = new HashMap<String,String>();m3.put("activityId", "000003");m3.put("activityName", "阿斯蒂芬3");Map<String,String> m4 = new HashMap<String,String>();m4.put("activityId", "000004");m4.put("activityName", "阿斯蒂芬4");Map<String,String> m5 = new HashMap<String,String>();m5.put("activityId", "000005");m5.put("activityName", "阿斯蒂芬5");list.add(m1);list.add(m2);list.add(m3);list.add(m4);list.add(m5);String s = JSONArray.fromObject(list).toString();out.print(s);out.close();return null;}}