AJAX总结
Ajax原理一、Ajax简介 1、Ajax=Asynchronous JavaScript and XML(异步的JavaScript和XML),是一种在不重新加载整个网页的情况下,实现页面局部更新的艺术,它不是一种编程语言,而是一种使用现有标准的新方法。 二、Ajax执行原理(过程) 1、创建XMLHttpRequest对象 var xmlhttp;
if(window.XMLHttpRequest)
{//code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp = new XMLHttpRequest();
}
else
{//code for IE5,IE6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
2、向服务器发送请求 xmlhttp.open("GET","test.jsp","true");
xmlhttp.send();
(2)方法及参数介绍:
xmlhttp.open("GET","test.jsp?name=zhangsan&sno=1101",true);
xmlhttp.send();
xmlhttp.open("POST","test2.jsp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name=zhangsan&sno=1101");
(3)Async = true
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("MyDiv").innerHTML = xmlhttp.responseText;
}
xmlhttp.open("GET","test1.jsp",true);
xmlhttp.send();
}
注意:当您使用async=false时,请不要编写onreadystatechange函数,只要把相应的处理代码放到send语句后即可,则JavaScript代码会等到服务器响应就绪时才继续执行,看如下代码: xmlhttp.open("GET",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
3、服务器响应 document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
(2)responseXML属性:获得XML形式的响应数据。 xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementByTagName("ARTIST");
for(int i = 0;i<s.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
4、onreadystatechange事件(其实是XMLHttpRequest对象的属性)
(3)status:状态
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState==4 && status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
附加:使用Callback函数(回调函数) function myFunction() {
loadXMLDoc("ajax_info.txt",function() {
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
});
}
5、综合以上所讲的内容,举一个简单的例子,代码如下所示: <html>
<head>
<script type="text/javascript"> var xmlhttp; function loadXMLDoc(url,cfunc) { if(window.XMLHttpRequest) {//code for IE7+,Chrom,Safari,Opera xmlhttp = new XMLHttpRequest(); } else {//code for IE5,IE6 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=cfunc; xmlhttp.open("GET",true); xmlhttp.send(); } function myFunction() { loadXMLDoc("/ajax/test1.jsp",function() { if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }); } </script>
</head>
<div id="myDiv">
<h2>Let AJAX change this text</h2>
</div>
<button type="button" onclick="myFunction()">通过AJAX改变内容</button>
</body>
</html>
以上内容是本人在学习Ajax时总结的重点知识,主要的学习辅助资源是W3School,如果您不喜欢W3School中的在线学习法,可以参考本文,其优点在于将W3School中的多个页面浓缩在一篇文章中,方便阅读;其缺点在于代码实例比较少,而且看不到实现的效果,这个我建议您去W3School参考相应的代码,那里可以看到代码的效果展示。如果有什么不足之处,比如表述错误之类的,我也希望能得到大家的指证,以求共同进步。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |