最简单的AJAX体系结构
上一篇提到作者在Javascript上比较不喜欢使用Library,也提到了几个主要的原因。这时候有些朋友就问了:那都不用Library或 Framework,要怎么作AJAX呢?因此在这边我介绍一下作者最熟悉、最常用,也应该算是最简单的一个AJAX体系结构吧!
AJAX最 主要的目的就是在不需要刷新画面的前提下,跟Server抓取数据,并且根据从Server抓的数据来更新变量和画面。而在比较旧的浏览器版本时代, 作者都是使用iframe或是更早的隐藏的frame来达到这样效果。而在比较新的浏览器版本中,都有提供这样功能的物件,只要利用以下的一个 function,就可以在各种浏览器中,获取用HTTP跟Server沟通的物件。
function getHTTPObject() {
var xmlhttp=false;
if(window.XMLHttpRequest) {
try {xmlhttp = new XMLHttpRequest();}
catch(e) {xmlhttp = false;}
}else if(window.ActiveXObject) {
try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e) {
try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
catch(e) {xmlhttp = false;}
}
}
return xmlhttp;
}
那 Server要传什么东西回来给浏览器呢?我通常有两种作法:最简单的方式就是直接生成一段Javascript回来给Client运行,可能是用 document.getElementById抓取画面上某个物件来修改他的内容,也可以是调用一些已经写好的函数。
我通常会把这样的 动作包成一个简单的小函数如下:
function read(url,func,sync){
var _reader=getHTTPObject();
_reader.open(\'GET\',file,!sync);
if(!sync){
_reader.onreadystatechange = function(){
if(_reader.readyState==4){
if(func) func(_reader);
}
}
}
_reader.send(null);
if(sync) {
if(func) func(_reader);
}
}
未来要做任何AJAX动作只要传入要调用的一个网址,然后传入用来处理Server回传值,例如直接eval回传的Javascript,就完成了一个 AJAX的调用!而所有用到的程序代码没有多少行,相信花个几分钟就可以瞭解,就不再需要用到一堆没时间去瞭解,出了问题不知道怎么修的程序代码啰!
read(‘server.jsp’,function(res){eval(res.responseText);});