使用AJAX异步获取数据[转]
<P>AJAX这个名字看起来很神奇,我第一次见到它也被它吸引了,它是Asynchronous JavaScript and XML的简写,异步的JAVASCRIPT和XML,关于AJAX的介绍在网上的介绍太多了,我就不多那么多了,我的口才不好,没他们说的那么精彩,可以去<a href="http://zh.wikipedia.org/wiki/AJAX" target="_blank" >http://zh.wikipedia.org/wiki/AJAX</A> 看看,在这里我只是给大家一个例子,了解如何去使用AJAX。
<P>AJAX最有意思的地方就是可以不用刷新网页而可以和后台进行交互,不需要对页面进行刷新,实现网页与网页间的平滑过渡。使用AJAX不需要安装新的插件,只要求你的浏览器支持JAVASCRIPT。</P>
<P>首先你需要你个JAVASCRIPT中的对象XMLHttpRequest,它是AJAX的核心,我们都围绕着它做事,通过下面的代码可以获取一个:</P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TR>
<TD class=code bgColor=#e6e6e6><PRE>if (window.XMLHttpRequest){<BR><BR>xmlObj = new XMLHttpRequest();<BR><BR>}else if (window.ActiveXObject){<BR><BR>xmlObj = new ActiveXObject("Microsoft.XMLHTTP");<BR><BR>}<p>
<P>我们通过这个对象的OPEN方法向服务发送请求,</P><P>该函数声明为XMLHttpRequest.open(String method, String URL, boolean asynchronous);</P>
<P>method是请求的方式,可以为GET和POST <BR><BR>URL是你要请求的资源 <BR><BR>asynchronous是布尔类型,为true表示交互设置为异步</P>
<P>xmlObj.open("GET",URL,true);<BR><BR>xmlObj.send("");</P>
<P>调用send()(参数是空或是null)将会发起一次请求,</P><P>对于GET方式的请求,两次同样的请求将会得到相同的结果,</P><P>由于为将交互设置为异步方式,因此要为指定一个回调函数:</P>
<P>xmlObj.onreadystatechange = callBackFunction;<BR><BR>剩下的事就交给回调函数处理了。</P><P>有一点要注意了,用Servlet或JSP来响应异步请求时,</P><P>要设置reponse的contentType属性指明是XML格式:</P>
<P>response.setContentType("text/xml");<BR><BR>一切都准备好了,那我们现在来做一个简单的异步请求,并将请求返回的结果显示出来:</P>
<P>客户端:</P>
<P><html><BR><BR><script language="javascript"><BR><BR>function load(resource) {<BR><BR>if (window.XMLHttpRequest){<BR><BR>xmlObj = new XMLHttpRequest();<BR><BR>}else if (window.ActiveXObject){<BR><BR>xmlObj = new ActiveXObject("Microsoft.XMLHTTP");<BR><BR>}else {<BR><BR>return;<BR><BR>}<BR><BR>xmlObj.onreadystatechange = handleResponse;<BR><BR>xmlObj.open("GET",resource,true);<BR><BR>xmlObj.send(""); <BR><BR>}<BR><BR>function handleResponse() {<BR><BR>if (xmlObj.readyState == 4){//xmlObj loaded<BR><BR>if (xmlObj.status == 200){<BR><BR>var datas = xmlObj.responseXML.getElementsByTagName("data");<BR><BR>var obj = document.getElementById("data");<BR><BR>obj.innerText = datas[0];<BR><BR>}<BR><BR>}<BR><BR>}<BR><BR></script><BR><BR><body><BR><BR><p><a href="#" onclick="load('data.jsp')">发送请求</a></p><BR><BR><p id="data">看这里!</p><BR><BR></body><BR><BR></html><BR><BR>以下是data.jsp</P>
<P><%response.setContentType("text/xml");%><BR><BR><?xml version='1.0' encoding='gb2312' ?><BR><BR><home><BR><BR><data>Zjcfan</data><BR><BR></home></P></PRE></TD></TR></TABLE>
页:
[1]
