日期:2014-05-16  浏览次数:20594 次

ajax心得【转】

看到这个标题,一些AJAX老鸟可能就要看不惯我了,没关系,多元化嘛!
废话少说,我所说的AJAX本质,其实就是几个AJAX底层函数,在任何AJAX框架底层所封装的方法(几个javascript函数)
1 发送数据,当然对结果的处理可以按需要去修改
function sendXmlData(xmlData,serverUrl)
{
?var xmldoc = new ActiveXObject("Msxml2.DOMDocument");
?xmldoc.async = false;
?xmldoc.loadXML(xmlData);
?var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
?

?var url=serverUrl;?

?xmlhttp.open("post", url, false);
?xmlhttp.send(xmldoc);
?if(xmlhttp.status = 200)
?{
??return xmlhttp.responseText;
?}
?else
?{
??var result="<Result><value>0</value><msg>" + xmlhttp.statusText + "</msg></Result>";
??return result;
?}
}

2 发送简单提交需求
function sendXmlHttp(serviceUrl)
{
?var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");?
?xmlhttp.open("GET", serviceUrl, false);
?xmlhttp.send();

?var reMsg="";
?if(testXmlhttp(xmlhttp))
?{
??????? reMsg=xmlhttp.responseText;
??? }
??? return reMsg;
}
注:serviceUrl就是一个页面的链接地址,可以绝对也可以相对
可能sendXmlData会有一个不同的版本,主要是发送数据量大小不同的原因。
有了这两个函数,你就能实现大部分无刷的效果了

============================================================================

?

一直说ajax的异步调用、局部刷新,除了级联菜单用过确实很惊奇之后,再也没再用过。
??? 最近要用ajax,看了jquery和YUI,疑惑重重。
??? 所以频频问朋友如何在struts1.2中使用jquery、YUI?
?? 也频频问朋友jquery无非就是js的封装而已,怎么ajax了?
??? 大概4,5日,念头一闪,再想这个问题,突然发现自己忽略了ajax的本质:
??? 1) 封装htmlhttpobject 这个对象的跨浏览器....
??? 2) 异步调用
? ? 3) 局部刷新
? ?
? ? 那和传统做法到底有什么不同呢?


??? 传统做法:界面-->直接调用后台逻辑-->处理-->得到结果-->包装结果-->在新页面显示结果


????ajax做法:界面-->直接调用ajax/js函数-->调用??? 后台逻辑-->处理-->得到结果-->包装结果-->在本来页面的div或者某标记那里显示结果

?


???? 这个区别,如果仅仅从用户角度来说,如果不需要同一个页面展现,或者不需要当前页面的其他东西,新页面和不跳转实在没有什么区别
???? 但是正是往往需要把结果展示在同一页面,比如数据对比,或者关联显示(级联,细目图显示)等,这个意义就出来了。

???? 而像jquery,其就是封装了一些函数,把该封装的封装好,从而你一调用就产生了一个对象。
???? 这个思想真的好,我可以开发一些创建组件(flash组件,或者其它展示组件,一调用就产生一个引用,这样对它一赋参数,从而达到了组件开发的可行性)。

????? 对用户来说,使用Ajax可以消除网页跳转带来的空白和闪烁,网页访问的用户体验就像本地应用程序一样。
另一个好处是可以提高效率。传统方法每次要显示新内容时,都要在服务器端生成整个html页,再传输到浏览器,如果网页复杂,而变化的内容只占一小部分,这种方式的数据传输量大;使用Ajax则只把需要变化的数据传输过来,对现在很多应用情况,都能大量减少网络传输。