Ajax学习
第一步、创建XMLHTTPRequest对象
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
var xmlhttp; if (window.XMLHttpRequest){ // code for IE7+,Firefox,Chrome,Opera,Safari xmlhttp=new XMLHttpRequest(); }else{ // code for IE6,IE5 xmlhttp=newActiveXObject("Microsoft.XMLHTTP"); }
第二步、向服务器发送请求
xmlHttp.open(“请求方式”,URL地址,async是否异步true ro false)
xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
注释:当您使用 async=false 时,请不要编写 onreadystatechange 函数,把代码放到 send() 语句后面即可:
xmlhttp.open("GET",false); xmlhttp.send(); document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
第三步、服务器响应
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
responseText 属性
如果来自服务器的响应并非 XML,请使用 responseText 属性。
responseText 属性返回字符串形式的响应,因此您可以这样使用:
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;<strong> </strong>
responseXML 属性
如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:
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;
附:AJAX - onreadystatechange事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。
描述 |
|
onreadystatechange |
|
readyState |
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。 · 0: 请求未初始化 · 1: 服务器连接已建立 · 2: 请求已接收 · 3: 请求处理中 · 4: 请求已完成,且响应已就绪 |
status |
200: "OK" |
在onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当readyState 等于 4 且状态为 200 时,表示响应已就绪:
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }
使用Callback 函数
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; } }); }
源码下载:http://download.csdn.net/detail/dream_angel_z/8586761