ajax jQuery+servlet


編寫具體的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應用就完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM