======================================================
注:本文源代码点此下载
======================================================
ajax的本质是什么?今天在网上看到有人说是啊贾克斯的球迷提出的东西,呵呵~~很经典的一个回答。有人说是就是js,有人说是模拟的request和post。其中我比较认可的最后的说法。不过很多人都只是看到现象,包括以前的我,认为ajax就是js的东西,主要功能和用途就是实现无刷新页面。
下面我把我对ajax认识跟大家分享一下,主要是我根据现象的一些猜想,并不是微软的权威,大家觉得好就支持一些,觉得不好欢迎指正。
用过ajax的人大概都知道xmlhttp吧,不知道大家在用的时候是否想过,为什么叫这个名字呢?其实是有原因,ajax的请求无非是xml和http。我们通过ajax去同步或异步调用一个页面,并从这个页面获取到数据,再通过js显示在我们的页面,这是我们看得到的现象。那么我们看不到的是什么呢?其实ajax的核心主要是个com组件,页面通过js去触发com组件的一个事件,假如你要求com组件执行的是个同步的ajax请求的话,那么这个时候 ie的线程会进入到com,com通过一个封装好http头的socket链接请求服务器,这个时候服务器就会当正常的http请求把请求的页面返回给这个com组件,当com获取到数据后又主动的调用回js,这样就ajax同步工作的本质,那么异步呢?异步其实也一样,不过异步的话,当ie把当前线程交给com的时候,com把这条线程又还给ie,自己开辟一条新的线程去做请求的事情,所以不会造成ie阻塞死在那里。
大家如果感兴趣的话可以自己做一个com代替传说中ajax。当然,真正做这个不是那么容易。不过大家如果会点flash的话,可以通过flash去验证这一观点,因为flash的播放器本身就是一个com组件,并且as3提供了socket的对象,这个实现起来比较简单点。不过使用flash的socket有个安全策略的问题,大家做的时候再想办法解决吧!
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/