Ajax用了才知道这玩意好,可以在后台偷偷的干一些坏事,哈哈,适合我的风格。
Ajax其实就是Asychronous JavaScript and XML,不过和XML的关系不太大,因为XML这种语言因为通用所以臃肿。不太适合小型应用。说的通俗点,就是使用一种叫做XMLHttpRequest的浏览器对象,偷偷的在后台访问服务器,得到服务器反馈后,就可以更新当前页面的局部数据,或者不更新(就是干坏事的时候)。
这种XMLHttpRequest对象实际上就像一个mini的浏览器对象,打开一个网址,然后发送'GET'或者'POST'请求,附带上一些数据,注意:对于'POST'请求一定要使用:
setRequestHeader("Content-length", len(yourdate));
来设置'POST‘请求发送的数据长度,如果没有数据,则直接设为0,这在发送某些命令时会使用到。
XMLHttpRequest的创建方法有很多种,其中的种类多样性显然是源自于IE浏览器的种类繁多和彼此不兼容。各种浏览器有各自不同的XMLHttpRequest,我也懒得自己研究,在wiki上找了一个创建方法,就直接使用了:
ajaxObject = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){
try { return new XMLHttpRequest(); } catch(e){
throw new Error( "This browser does not support XMLHttpRequest." );
}}}}
var ajax = new ajaxObject();
接下来就可以使用创建好的XMLHttpRequest对象ajax来完成我们的ajax任务了。
ajax.onreadystatechange = function(){
if(ajax.readyState < 4){$(action).innerHTML="building";}
if(ajax.readyState == 4&& ajax.status == 200){
$(action).innerHTML=ajax.responseText;}}
pwurl = "/rpc?action="+action;
try{ajax.open("POST",pwurl,true);} catch(e){alert(e);}
ajax.setRequestHeader("Content-length", 0);
ajax.send(null);
上述javascript实现的功能就是往wpurl网站的rpc接口发送名称为action的操作,其中发送的数据为空,在请求未返回是,原始页面id为action的元素显示“loading”,当操作完成后显示返回的结果。该例采用了'POST'方法,只用了8行javascript代码就可以完成一个ajax实现,是不是好简单啊。哈哈:) 如果是采用'GET'方法的话,第7行都可以省略了,并且把第6行改成如下语句就行了。
try{ajax.open("GET",pwurl,true);} catch(e){alert(e);}
看来Ajax这种东西的面纱一揭下来也没什么神秘的。就是打开一个网址,发送点数据,然后等待结果,并且反馈给页面而已。
Recent Comments