根据W3C总结Ajax基础技术
1、 AJAX是一种用于创建快速动态网页的技术,通过后台 与服务器进行少量的数据交换,AJAX可以实现网页的异步更新,这意味着可以再补充新加载整个网页的情况下,对网页的某部分进行更新。
2、 XMLHttpRequest是AJAX的基础,所有的浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveXObject)。
1 var xmlhttp=false; 2 try 3 { 4 if (window.XMLHttpRequest) 5 {// code for IE7+, Firefox, Chrome, Opera, Safari 6 xmlhttp=new XMLHttpRequest(); 7 } 8 else 9 {// code for IE6, IE5 10 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 11 } 12 } 13 catch(err) 14 { 15 xmlhttp=false 16 } 17 if(!xmlhttp) 18 { 19 alert(“XMLHttpRequest在初始化的过程中出现错误!”); 20 }
发送请求:
1 var phone = document.getElementById("phone").value; 2 var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone); 3 xmlhttp.open("GET", url, true); 4 xmlhttp.onreadystatechange=updatePage; 5 xmlhttp.send(null); 6 function updatePage() 7 { 8 if (xmlhttp.readyState==4 && xmlhttp.status==200)
//readyState==4表示响应已经完成,可以访问服务器的数据,http的状态status==200是为了防止服务器响应请求并完成了处理但是报告了一个错误,200表示一切顺利。 9 { 10 11 } 12 }
3、静态的javascript(不写在函数或方法体重javascript脚本)是指把代码直接写在<script>标记中,就是说代码是在页面显示给用户的某个时候运行的,ajax一般写成静态的,这样可以提前验证浏览器是否支持,而不是等用户输入了一半的时候显示浏览器不支持。
4、 XMLHttpRequest唯一的目的就是发送请求和接受响应。
5、 escape() 方法,它用于转义不能用明文正确发送的任何字符。比如,电话号码中的空格将被转换成字符 %20,从而能够在 URL 中传递这些字符。
6、Ajax采用一种沙箱的安全模型(就是不能跨域调用脚本),ajax代码只能对所在的同一个域发送请求。
7、为了避免请求中的缓存,可以采用:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
setRequestHeader(header,value); header: 规定头的名称, value: 规定头的值
8、 AJAX服务器的响应,获取服务器的响应使用的是XMLHttpRequest对象的几个属性:
ResponseText获得字符串形式的响应数据,responseXML获得XML形式的响应数据,document.getElementByID(“myDiv”).innerHTML=xmlhttp.responseText;
获取XML数据,然后进行XML的处理;
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
9、 AJAX的onreadystatechange事件,当请求被发送到服务器时,我们需要执行一些响应的任务,每当readyState改变时,就会触发onreadystatechange事件,readyState属性存放的是XMLHttpRequest的状态信息。
Onreadystatechange存储函数,每当readyState属性改变时,就会调用该函数;
readyState存有XMLHttpRequest的状态。从0~4发生变化
0:请求为初始化 1服务器已将建立连接2请求已经连接3请求处理中4请求已完成,且响应已就绪;
Status:200“ok”
404:未找到页面
*****在onreadychange事件中,我们规定当服务器响应已做好被处理的准备是多执行的任务。当readyState等于4且状态为200时表示响应一就绪;
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
10、 CallBack函数是一种以参数的形式传递给另一个函数函数;如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。
该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):
function myFunction()
{
loadXMLDoc("ajax_info.txt",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
});
}