AJAX技术基础
AJAX简介
AJAX即“AsynchronousJavascriptAndXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
Ajax 的核心是 JavaScript 对象 XmlHttpRequest。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest 使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户。
很多初学者都以为AJAX是一门是一种新的编程语言,其实它只是一种用于创建更好更快以及交互性更强的Web应用程序的技术。
AJAX基本原理
从图中我们可以看出,在客户端的用户界面通过Javascript引用Ajax引擎,Ajax引擎调用HttpRequest对象(已经被Javascript封装,直接声明即可!)访问WEB服务器,WEB服务器将获得的数据结果生成XML的形式返回至页面前端,并生成对应的HTML+CSS。
Ajax实例01
- <html>
- <Metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
- <head>
- <scripttype="text/javascript">
- functionloadXMLDoc1()
- {
- //声明一个对象
- varxmlhttp;
- //解决浏览器兼容问题
- if(window.XMLHttpRequest)
- {
- //IE7+,Firefox,Chrome,Opera,Safari版本的浏览器使用
- xmlhttp=newXMLHttpRequest();
- }
- else
- {
- //IE6,IE5浏览器使用
- xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
- }
- //xmlhttp对象的onreadystatechange是此对象的成员。每当readyState属性改变时,就会调用该函数。
- xmlhttp.onreadystatechange=function()
- {
- /*
- xmlhttp.readyState的值有5个,从0到4发生变化。
- 0:请求未初始化
- 1:服务器连接已建立
- 2:请求已接收
- 3:请求处理中
- 4:请求已完成,且响应已就绪
- */
- /*
- xmlhttp.status的值一般有两个:
- 200:"OK"
- 404:未找到页面
- */
- if(xmlhttp.readyState==4&&xmlhttp.status==200)
- {
- /*
- 将对应的元素的值改为xmlhttp.responseText
- responseText:获得字符串形式的响应数据。
- responseXML:获得XML形式的响应数据。
- */
- document.getElementById("myDiv1").innerHTML=xmlhttp.responseText;
- }
- }
- xmlhttp.open("GET","./Demo01.PHP",true);
- xmlhttp.send();
- }
- functionloadXMLDoc2()
- {
- //声明一个对象
- varxmlhttp;
- //解决浏览器兼容问题
- if(window.XMLHttpRequest)
- {
- //IE7+,从0到4发生变化。
- 0:请求未初始化
- 1:服务器连接已建立
- 2:请求已接收
- 3:请求处理中
- 4:请求已完成,且响应已就绪
- */
- /*
- xmlhttp.status的值一般有两个:
- 200:"OK"
- 404:未找到页面
- */
- if(xmlhttp.readyState==4&&xmlhttp.status==200)
- {
- /*
- 将对应的元素的值改为xmlhttp.responseText
- responseText:获得字符串形式的响应数据。
- responseXML:获得XML形式的响应数据。
- */
- vartxt="";
- xmlDoc=xmlhttp.responseXML;
- x=xmlDoc.getElementsByTagName("author");
- for(i=0;i<x.length;i++)
- {
- txt=txt+x[i].childNodes[0].nodeValue+"<br/>";
- }
- alert(x);
- document.getElementById("myDiv2").innerHTML=txt;
- }
- }
- xmlhttp.open("GET","./Demo01.xml",true);
- xmlhttp.send();
- }
- </script>
- </head>
- <body>
- <h2>AJAX实例Demo01</h2>
- <buttontype="button"onclick="loadXMLDoc1()">请求数据,返回形式为字符串!</button>
- <divid="myDiv1"></div>
- <buttontype="button"onclick="loadXMLDoc2()">请求数据,返回形式为XML文件的内容!</button>
- <divid="myDiv2"></div>
- </body>
- </html>
Demo01.xml的内容
- <?xmlversion="1.0"encoding="utf-8"?>
- <bookstore>
- <bookcategory="children">
- <titlelang="en">HarryPotter</title>
- <author>JK.Rowling</author>
- <year>2005</year>
- <price>29.99</price>
- </book>
- <bookcategory="cooking">
- <titlelang="en">EverydayItalian</title>
- <author>GiadaDeLaurentiis</author>
- <year>2005</year>
- <price>30.00</price>
- </book>
- <bookcategory="web"cover="paperback">
- <titlelang="en">LearningXML</title>
- <author>ErikT.Ray</author>
- <year>2003</year>
- <price>39.95</price>
- </book>
- <bookcategory="web">
- <titlelang="en">XQueryKickStart</title>
- <author>JamesMcGovern</author>
- <author>PerBothner</author>
- <author>KurtCagle</author>
- <author>JamesLinn</author>
- <author>VaidyanathanNagarajan</author>
- <year>2003</year>
- <price>49.99</price>
- </book>
- </bookstore>