Ajax 학습 노트 01 - 데이터 비동기 상호작용 간단하게 실현

Ajax 의 간단 한 실현:
①. demo - 1: 간단 한 데이터 세그먼트 형식 으로 프론트 페이지 에 되 돌려 줍 니 다.
페이지 코드: index. html
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <script type="text/javascript" src="js/verify.js"></script>
    <script type="text/javascript" src="js/jquery-1.4.2.js"></script>
    <script type="text/javascript">
        
    </script>
    <title>     </title>
</head>
<body>

          ajax  ,      :<br/>
     <!--
     <form action="AjaxServer" method="post">
            :<input type="text" name="name"/>
         <input type="submit" value="  "/>
     </form>
     -->
  <!--ajax                ,          -->
     <!--ajax     name  ,    id   -->
          :<input type="text" id="userName"/>
              <input type="button" value="    " onclick="verify()"/>
     <!--  div                 ,id    dom         -->
             <div id="result"></div>
</body>
</html>
 

배경 servlet 코드:
1. AjaxServer - out. println () 형식 으로 데스크 톱 에 데 이 터 를 출력 합 니 다. 페이지 를 새로 고 치 는 것 이 아 닙 니 다.
Import…
    
/**
 * Created by IntelliJ IDEA.
 * User:    
 * Date: 2011-11-16
 * Time: 15:35:55
 * Alt+enter         
 * To change this template use File | Settings | File Templates.
 */
public class AjaxServer extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        //      ,      getWriter    
        httpServletResponse.setCharacterEncoding("utf-8");
        httpServletResponse.setContentType("text/html;charset-utf-8");
        PrintWriter out = httpServletResponse.getWriter();
        //1.            
         String old =  httpServletRequest.getParameter("name");  //name  js    url      
        // String name = new String(old.getBytes("iso8859-1"),"utf-8");
        String name = URLDecoder.decode(old,"UTF-8");
        System.out.println("     "+old);
         System.out.println("     "+old);
        //2.         
         if(name==null||name.length()==0){
             out.println("       ");
         }else{
          //3.      
             if(name.equals("guangpeng")){
          //4 .       ,                   ,             
                 out.println("   "+name+"!");
             } else{
                 out.println(name+"--11      ,    !");
             }
         }

    }

    @Override
    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
       doGet(httpServletRequest, httpServletResponse);
    }
}

JS 파일 코드:
①. Jquery 를 이용 하여 ajax 와 배경 서버 의 상호작용 을 간단하게 실현 한다.
/ / 사용자 이름 검사 방법 정의

function verify(){
   // var url =  "AjaxServer?name="+encodeURI(encodeURI($("#userName").val()));
     /*
     * jquery    
     * var userName = $("#userName").val();
     * */
       //jquery    jquery  ,              
       var jqueryObj = $("#userName");
       //      
       var userName =  jqueryObj.val();
       // alert(userName);
    //2.                servlet
     //  jquery XMLHTTPrequest       
       $.get("AjaxServer?name="+userName,null,callback);

    //
}



//    ,            
function callback(data){
    //3.             
     //  alert("         !!!");
       //alert(data);
         $("#result").html(data);
    //4.                   

}

Demo 1 은 데이터 가 문자열 형식 으로 서버 와 데이터 상호작용 을 할 수 있 습 니 다. 사실 js 파일 도 주석 을 제거 하고 jquery 체인 프로 그래 밍 사상 을 이용 하여 verity 1. js 라 고 간단하게 쓸 수 있 습 니 다.
function verify(){
    var userName = $("#userName").val();
    $.get("AjaxServer?name="+userName,null,function(data){
        $("#result").html(data);
    });
}
Demo 2: XmlHttpRequest 대상 을 사용 하여 ajax 비동기 데이터 인 터 랙 션 을 진행 합 니 다.
XmlHttpRequest 대상 을 사용 하여 ajax 비동기 데이터 인 터 랙 션 을 진행 합 니 다: html 페이지 와 servlet 는 같 습 니 다. 페이지 에 도 입 된 js 파일 만 업데이트 하면 됩 니 다.
/ / 이 방법 은 XmlHttpRequest 대상 을 사용 하여 ajax 비동기 데이터 인 터 랙 션 을 진행 합 니 다.
  
var xmlhttp;
function verify(){
    //var xmlhttp;
    //  dom           
    var userName = document.getElementById("userName").value;
    if(window.XMLHttpRequest){
    //  firefox,mozillor opera safari ie7.8
        xmlhttp = new XMLHttpRequest();
    //       bug   ,      xml     
        if(xmlhttp.overrideMimeType){
            xmlhttp. overrideMimeType("text/xml");
        }
    }else if(window.ActiveXObject){
     //  ie6,5
     //        XMLHttpRequest       ,     js 
    //          ,       ,        
        var activeNeme = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
        for(var i=0; i<activeNeme.length; i++){
            try{
            xmlhttp = new ActiveXObject(activeNeme[i]);
            break;
                }catch(e){

            }
        }

    }
    if(!xmlhttp){
        alert("XMLHttpRequest      ");
    }else{
        alert(xmlhttp);
    }

    //2.       
    //       ,     ,      ,           
    xmlhttp.onreadystatechange = callback;//        

    //3.        Get    
    //       http     ,     http     ,    get post
    //          url  ,get    url 
    //                   ,true    
   // xmlhttp.open("GET","AjaxServer?name="+userName, true);
    //4.    ,          
    //        ,send                 
    //     ,send          
    //xmlhttp.send(null);


    //post        
     xmlhttp.open("POST","AjaxServer", true);
    //    http   
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //post      
    xmlhttp.send("name="+userName);


}


//    
function callback(){
    //5.      
  //             4       ,XMLHttpRequest      0-4
    if(xmlhttp.readyState == 4){
        //  http       
        if(xmlhttp.status == 200){
         //           
         //              
          var responseText = xmlhttp.responseText;
          //         
            var divNode = document.getElementById("result");
            divNode.innerHTML = responseText;
        }
    }
}
 

js 의 측면 에서 ajax 데이터 의 상호작용 원 리 를 이해 하 다.

좋은 웹페이지 즐겨찾기