開始學習ajax,內容很少,跟着菜鳥教程做點筆記~(http://www.runoob.com/ajax/ajax-tutorial.html)
1、什麼是ajax
ajax=異步JavaScript和XML,它用於創建快速動態網頁。通過在後臺與服務器進行少量數據交換,ajax實現了不重載整個頁面情況下對一個頁面的某部分進行更新
2、ajax實例代碼(先看看代碼,後面進行代碼分析)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 瀏覽器執行代碼
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="myDiv"><h2>使用 AJAX 修改該文本內容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改內容</button>
</body>
</html>
3、ajax的工作原理
其原理簡單來說就是通過XmlHttpRequest對象來向服務器發異步請求,然後用js操作dom進行更新。其中的關鍵異步就是從服務器獲得請求數據(這一關鍵的核心就是XMLHttpRequest)
創建XmlHttpRequest對象
所有現代瀏覽器均內建XMLHttpRequest對象,老版可能不支持。因此我們要如下代碼進行創建:
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 瀏覽器執行代碼
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
4、向服務器發送請求
如果要向服務器發送請求,我們使用XMLHttpRequest的open()和send()方法:
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
這裏就寫下第三個參數 Async:
如果要想實現異步,第三個參數必須設置爲true。且當其處於true時候,請規定在響應處 onreadeystatechange 事件中的就緒狀態時執行的函數:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
xmlhttp.send();
5、服務器響應
如需獲得來自服務器的響應,新需要用XMLHttpRequest對象的responseText或responseXML屬性
如果來自服務器的響應並非XML,就用responseText屬性。它返回字符串形式的響應
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
6、onreadystatechange事件
當請求被髮送到服務器時,我們需要執行一些基於響應的任務。每當readyState改變時,就會觸發onreadystatechange事件。readyState屬性存有XMLHttpRequest的狀態信息。下面是XMLHttpRequest對象的三個重要屬性: