步驟:
/* 用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>