深入了解AJAX
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有個安全策略的問題,大家做的時候再想辦法解決吧!
轉載于:https://www.cnblogs.com/easytools/archive/2009/05/05/1450242.html
總結
- 上一篇: 全屏的三栏div+css布局示例
- 下一篇: 切莫开一块地荒一块地