編寫具體的Ajax代碼,使用jQuery框架將會節省很多的時間,當我們點擊按鈕的時候,將一些信息收集起來,然后通過Ajax傳遞到服務端,然后使用布局修改DOM來實現無刷新的效果。
要想實現ajax,先來看一下$.ajax()的一些常用屬性吧:

下面通過Ajax實現登錄信息的驗證,先來看一下以"GET"的請求方式:
jQuery代碼:
1 <script type="text/javascript" src="<%=basePath%>/Js/jquery-1.8.3.js"></script> 2 <script type="text/javascript"> 3 $(document).ready(function(){ 4 $("[value=GETsubmit]").click(function(){ 5 $.ajax({ 6 type: "GET", 7 url: "JqAjServlet.do?name="+$("[name=name]").val()+"&pwd="+$("[name=pwd]").val()+"&date="+new Date().getTime(), 8 dataType: "text", 9 success: function(data){ 10 if(data=="true"){ 11 $("#show").html("===ok==="+"<br/>"+"name="+$("[name=name]").val()+"<br/>"+"pwd="+$("[name=pwd]").val()); 12 }else if(data=="false"){ 13 $("#show").html("==信息不符合=="); 14 } 15 }, 16 error: function(){ 17 $("#show").html("Error XMLHttpRequest"); 18 } 19 }); 20 }); 21 }); 22 </script>
第1行代碼是加載一個jQuery庫,這里隨意加載一個現有的jQuery庫即可。
第7行代碼是傳遞數據,數據為發送請求的地址+發送到服務端的數據。這里為什么沒有$.ajax的data屬性呢?那是因為當data屬性的參數不是字符串時,將自動轉換成字符串格式。所以在GET請求中附加在url后,以防止這種自動轉換。
第8行代碼是指定預期服務端返回的數據類型,這里我們將其指定為“text”文本形式(也可指定為xml、json等格式。json的格式將在另一篇文章中講解)。
第9行代碼是請求成功后回調的函數,“function(data)”這里的data是一個變量,是服務端返回的數據,相當於var data = xmlHttp.responseText();
jsp代碼:
1 <form action=""> 2 <table border="0"> 3 <tr><td>name:</td><td><input type="text" name="name"/></td></tr> 4 <tr><td>password:</td><td><input type="password" name="pwd"/></td></tr> 5 <tr><td></td><td><input type="button" value="GETsubmit"/></td></tr> 6 </table> 7 </form> 8 <div id="show"></div>
servlet代碼:
1 public class JqAjServlet extends HttpServlet { 2 3 4 public void doGet(HttpServletRequest request, HttpServletResponse response) 5 throws ServletException, IOException { 6 7 doPost(request, response); 8 } 9 public void doPost(HttpServletRequest request, HttpServletResponse response) 10 throws ServletException, IOException { 11 response.setContentType("application/text; charset=utf-8"); 12 PrintWriter out = response.getWriter(); 13 14 String name = request.getParameter("name"); 15 String pwd = request.getParameter("pwd"); 16 System.out.println("name="+name+" pwd="+pwd); 17 if(name.equals("admin") && pwd.equals("123456")){ 18 try { 19 out.write("true"); 20 } catch (Exception e) { 21 e.printStackTrace(); 22 }finally{ 23 out.close(); 24 } 25 }else{ 26 try { 27 out.write("false"); 28 } catch (Exception e) { 29 e.printStackTrace(); 30 }finally{ 31 out.close(); 32 } 33 } 34 } 35 36 }
這里需要注意的是第1行代碼,response.setContentType("application/text; charset=utf-8"); 這里聲明response返回一個text文件。調用response.getWriter().write()方法返回數據。
這樣一個簡單的ajax驗證登錄信息的界面就完成了。
當然了,Get方式也是可以提交數據的,不過像一些大型的數據,Get就不夠了。我們就需要一個Post一個Form。
下面就看一下如何以Post方式向服務端提交數據:
代碼很簡單,只有2行代碼值得解釋一下:
1 $("[value=POSTsubmit]").click(function(){ 2 $.ajax({ 3 type: "POST", 4 url: "JqAjServlet.do", 5 dataType: "text", 6 data: "name="+$("[name=name1]").val()+"&pwd="+$("[name=pwd1]").val()+"&date="+new Date().getTime(), 7 success: function(data){ 8 if(data=="true"){ 9 $("#show1").html("===ok==="+"<br/>"+"name="+$("[name=name1]").val()+"<br/>"+"pwd="+$("[name=pwd1]").val()); 10 }else if(data=="false"){ 11 $("#show1").html("==信息不符合=="); 12 } 13 }, 14 error: function(){ 15 $("#show1").html("Error XMLHttpRequest"); 16 } 17 }); 18 });
第4行代碼,這里的參數只為發送請求的地址。
第6行代碼是連同請求發送到服務端的數據,前面有說當data屬性的參數不為字符串時,將自動轉換成字符串格式;這里,我們就需要用到這個功能(比如:dataType屬性的參數為json時,將在另一篇文章中講解)。
好了,這樣,簡單的Ajax應用就完成了。
