最も簡単なAjaxアプリケーション、非同期認証ユーザー名


Ajax非同期インタラクション技術は現在ウェブページの作成において非常に流行しており、ここではまずjQueryを使用してAjaxの非同期認証ユーザー名を完成させる方法を紹介します.
それから更に深く分析して、純粋なJSを使ってXMLHttpRequestオブジェクトを作成して、jQueryの下層のカプセル化の内容を完成して、以下はまずjQueryの実現を実証して、実は
とても簡単です.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>ajax.html</title>
	<script type="text/javascript" src="/Ajax/js/jquery-1.7.2.js"></script>
	<script type="text/javascript">
		function test(){
			//1.        
			var value = $("#userName").val();
			//2.                
			//  jQuery XMLHTTPRequest      
			$.get("/Ajax/servlet/AjaxServlet?name="+value,null,callback);
		}
		
		function callback(data){//    
			//3.           
			//alert(data);
			//4.         
			$("#div1").html(data);
		}
	</script>
  </head>
  
  <body>
       :<input type="text" id="userName" onblur="test();"/><span id="div1" style="color: red"></span>
	<br/>
      :<input type="password" id="password" /><br/>
      :<input type="text" id="mail" />
  </body>
</html>

ほとんどの説明はコードの注釈に書かれていますが、実際には何も説明する必要はありません.これはget側の接尾辞データを使用してバックグラウンドサーバに渡されます.
もちろん、バックグラウンドサーバコードは次のとおりです.
package com.bird.servlet;

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 AjaxServlet extends HttpServlet {

	/**
	 *            
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		String name = request.getParameter("name");
		name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
		PrintWriter out = response.getWriter();
		if(name.equals("bird")){
			out.println("   "+name+"    ");
			
		}else{
			out.println("      ,    ");
		}
	}

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

	}

}

次に、XMLHttpRequestオブジェクトの作成とインタラクティブな効果を純粋なJSで完了します.バックグラウンドコードは同じです.jQueryは私たちを助けてくれます.
多い
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>ajax1.html</title>
	<script type="text/javascript">
		var xmlhttp;
		function verify(){//      XMLHttpRequest     Ajax      
			//1.  dom           
			var userName = document.getElementById("userName").value;
			//2.  XMLHTTPRequest  
			if(window.XMLHttpRequest){
				xmlhttp = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				//  ie6    
				var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
				//        XMLHTTPRequest     ,      
				for(var i=0; i < activexName.length; i++){
					try{
						xmlhttp = new ActiveXObject(activexName[i]);
						break;
					}catch(e){
						
					}
				}
			}
			
			//     xmlhttprequest      
			if(!xmlhttp){
				alert("           ");
				return;
			}else{
				//2.      ,            
				xmlhttp.onreadystatechange = callback;
				//3.      
				xmlhttp.open("GET","/Ajax/servlet/AjaxServlet?name="+userName, true);
				//4.    ,           
				xmlhttp.send(null);
			}
		}
		
		//    
		function callback(){
			//        
			if(xmlhttp.readyState==4){
				//  http      
				if(xmlhttp.status==200){
					//        
					//        
					var responseText = xmlhttp.responseText;
					document.getElementById("div1").innerHTML=responseText;
				}
			}
		}
	</script>
  </head>
  
  <body>
      :<input type="text" id="userName" onblur="verify();"/><span id="div1" style="color: red"></span>
	<br/>
      :<input type="password" id="password" /><br/>
      :<input type="text" id="mail" />
  </body>
</html>