jquery $.ajax驗證使用者名稱是否存在範例程式碼

來源:互聯網
上載者:User

功能絕對實現了的.相容IE6、IE7、FF、Chrome

AjaxXMLServer的Servlet代碼如下:

package com.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AjaxXMLServer extends HttpServlet {

    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        try {
            //響應的Content-Type必須是text/xml,因為在jquery中資料接收的格式為xml
            response.setContentType("text/xml;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            //1、擷取參數
            String userName=request.getParameter("userName");
            //2、返回的資料類型拼裝成xml格式
            StringBuilder builder=new StringBuilder();
            builder.append("<message>");
            if(userName==null || userName.length()==0){
                builder.append("使用者名稱不可為空").append("</message>");
            }else{
                //3.校正操作
                if(userName.equals("tfq")){
                    //返回給使用者提示資訊
                    builder.append("使用者名稱["+userName+"]已經存在,請重新輸入使用者名稱").append("</message>");
                }else{
                    builder.append("使用者名稱["+userName+"]尚未被註冊,可以使用該使用者名稱").append("</message>");
                }
                out.println(builder.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/xml");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        doGet(request,response);
    }

}



checkUserJquery.html檔案代碼如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
      <title>My JSP 'checkUser starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="js/jquery-1.4.2.js" ></script>
    <script type="text/javascript" src="js/myVlidate_jquery.js" ></script>
  </head>
 
  <body>
    <center>
        <br />
        使用者名稱:<input type="text" id="userName" />
        <input type="button" value="校正" onclick="validate()" />
        <div id="showResult"></div>
    </center>
  </body>
</html>

myVlidate_jquery.js檔案代碼如下:

//驗證使用者是否存在
function validate() {

    // 1擷取文字框的內容
    // document.getElementById("userName"); dom的方式
    // Jquery的尋找節點的方式,參數中#加上id屬性值可以找到一個節點
    var obj = $("#userName");
    var userName = obj.val();
    //alert("userName: " + userName);

    // 2將擷取到的內容發送給伺服器的servlet
    // 調用jquery的XMLHTTPrequest對象get請求的封裝
    //$.get("servlet/CheckUserName?userName=" + userName, null, callback);
    //JS中定義一個簡單對象的格式
    var jsObj={name:"123",age:30};
    //使用jquery的XMLHTTPRequest對象get請求的封裝
    $.ajax({
        type:"POST",   //http請求方式
        url:"servlet/AjaxXMLServer", //發送給伺服器的url
        data:"userName="+userName, //發送給伺服器的參數
        dataType:"xml",  //告訴JQUERY返回的資料格式(注意此處資料格式一定要與提交的servlet返回的資料格式一致,不然不會調用callback)
        success:callback //定義互動完成,並且伺服器正確返回資料時調用回呼函數
    });
}

// 回呼函數
function callback(data) {
    // 3接收報務器返回的資料
    //首先需要將data這個dom對象中的資料解析出來
    var jqueryObj=$(data);
    //擷取message節點
    var message=jqueryObj.children();
    //擷取常值內容
    var text=message.text();
    // 4把返回的資料在div中顯示
    $("#showResult").html(text);
}

我在做此樣本時,不小心把AjaxXMLServer中返回jquery的資料格式弄成html了,怎樣調試都進不了callback.請大家注意一下servlet與query中返回的資料要一致就行了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.