用js內置對象XMLHttpRequest 來用ajax


步驟:

/* 用XMLHTTPRequest來進行ajax異步數據交交互*/

主要有幾個步驟:

//1.創建XMLHTTPRequest對象

//最復雜的一步

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
//針對某些特定版本的mozillar瀏覽器的bug進行修正。
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
};
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

2.注冊回調函數

xmlhttp.onreadystatechange = callback;

//3.設置連接信息。
//open第一個參數鏈接方式,第二是url地址
//3,true是異步鏈接
//xmlhttp.open("GET","xhr.php?name=" + username,true);

//使用post方式發送數據
xmlhttp.open("POST","xhr.php",true);

//post需要自己設置http的請求頭
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//4,發送數據,開始和服務器進行交互
//中如果true, send這句話會立即執行
//如果是false(同步),send會在服務器數據回來才執行
//xmlhttp.send(null);
//因為是get所以send中不需要內容
xmlhttp.send('name=' +username);

}
//5.寫回調函數,不同相應狀態進行處理

function callback(){
alert(xmlhttp.readyState);
//判斷對象狀態是交互完成,接收服務器返回的數據
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//["dada","xiaoyin","liujie"]
//純文本的數據
var responseText = xmlhttp.responseText;
var divNode = document.getElementById('result');
//6.將服務器的數據顯示在客戶端
divNode.innerHTML = responseText;
}
}

代碼:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>XHR</title>
 6     <link rel="stylesheet" href="../templates/css/verify.css">
 7 </head>
 8 <body>
 9     
10     <input type="text" id="username"><input type="button" value="提交" onclick="dadaHttpRequest()">
11     <div class="box" id="box"></div>
12         <script type="text/javascript" src="../templates/js/jquery.js"></script>
13         <script>
14         
15         /* 用XMLHTTPRequest來進行ajax異步數據交交互*/
16         //1.創建XMLHTTPRequest對象
17         var xmlhttp;
18         //最復雜的一步
19         function dadaHttpRequest(){
20             var username = document.getElementById('username').value;
21             if (window.XMLHttpRequest) {
22                 // code for IE7+, Firefox, Chrome, Opera, Safari
23                 xmlhttp = new XMLHttpRequest;
24 
25                 //針對某些特定版本的mozillar瀏覽器的bug進行修正。
26                 if (xmlhttp.overrideMimeType) {
27                       xmlhttp.overrideMimeType('text/xml');
28                 };
29 
30             } else if (window.ActiveXObject){
31                 // code for IE6, IE5
32                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
33             };
34 
35             //2.注冊回調函數
36             //onreadystatechange是每次 readyState 屬性改變的時候調用的事件句柄函數。
37             xmlhttp.onreadystatechange = callback;
38 
39             //3.設置連接信息
40             //初始化HTTP請求參數,但是並不發送請求。
41             //第一個參數連接方式,第二是url地址,第三個true是異步連接,默認是異步
42             xmlhttp.open("GET","xhr.php?name="+username,true);
43 
44             /*******************************************/
45             /*如果是xmlhttp.open("GET","xhr.php",true);*/
46             /*    xmlhttp.send('name=' +username);     */
47             /*    不行的                               */
48             /*******************************************/
49 
50             //使用post方式發送數據
51             //xmlhttp.open("POST","xhr.php",true);
52             //post需要自己設置http的請求頭
53             //xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
54 
55             //4,發送數據,開始和服務器進行交互
56             //發送 HTTP 請求,使用傳遞給 open() 方法的參數,以及傳遞給該方法的可選請求體。
57             //中如果true, send這句話會立即執行
58             //如果是false(同步),send會在服務器數據回來才執行
59             xmlhttp.send(null);
60             //因為是get所以send中不需要內容
61             //xmlhttp.send('name=' +username);
62 
63         }
64         
65         //5回調函數,不同相應狀態進行處理
66         function callback(){
67             //alert(xmlhttp.readyState);
68             //判斷對象狀態是交互完成,接收服務器返回的數據
69             if (xmlhttp.readyState==4 && xmlhttp.status==200)
70                 {
71                 //["dada","xiaoyin","liujie"]
72                 //純文本的數據
73                 var responseText = xmlhttp.responseText;
74                 var divNode = document.getElementById('box');
75                 //6.將服務器的數據顯示在客戶端
76                 divNode.innerHTML = responseText;   
77                 }    
78         }
79         </script>
80 </body>

 


免責聲明!

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



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