AJAX 簡介
在研究ajax之前首先讓我們先來討論一個問題 ——什么是Web 2.0 。聽到 Web 2.0 這個詞的時候,應(yīng)該首先問一問 “Web 1.0 是什么?” 雖然很少聽人提到 Web 1.0,實際上它指的就是具有完全不同的請求和響應(yīng)模型的傳統(tǒng) Web。比如,到hdu.edu.cn 網(wǎng)站上點擊一個按鈕。就會對服務(wù)器發(fā)送一個請求,然后響應(yīng)再返回到瀏覽器。該請求不僅僅是新內(nèi)容和項目列表,而是另一個完整的 HTML 頁面。因此當(dāng) Web 瀏覽器用新的 HTML 頁面重繪時,可能會看到閃爍或抖動。事實上,通過看到的每個新頁面可以清晰地看到請求和響應(yīng)。
Web 2.0(在很大程度上)消除了這種看得見的往復(fù)交互。比如在 Google Maps 上,你可以拖動地圖,放大和縮小,只有很少的重繪操作。當(dāng)然這里仍然有請求和響應(yīng),只不過都藏到了幕后。作為用戶,體驗更加舒適,感覺很像桌面應(yīng)用程序。這種新的感受和范型就是當(dāng)有人提到 Web 2.0 時您所體會到的。
需要關(guān)心的是如何使這些新的交互成為可能。顯然,仍然需要發(fā)出請求和接收響應(yīng),但正是針對每次請求/響應(yīng)交互的 HTML 重繪造成了緩慢、笨拙的 Web 交互的感受。因此很清楚,我們需要一種方法使發(fā)送的請求和接收的響應(yīng)只 包含需要的數(shù)據(jù)而不是整個 HTML 頁面。惟一需要獲得整個新 HTML 頁面的時候就是希望用戶看到 新頁面的時候。
但多數(shù)交互都是在已有頁面上增加細(xì)節(jié)、修改主體文本或者覆蓋原有數(shù)據(jù)。這些情況下,Ajax 和 Web 2.0 方法允許在不 更新整個 HTML 頁面的情況下發(fā)送和接收數(shù)據(jù)。對于那些經(jīng)常上網(wǎng)的人,這種能力可以讓您的應(yīng)用程序感覺更快、響應(yīng)更及時,讓他們不時地光顧您的網(wǎng)站。
什么是Ajax?
1、全稱:Asynchronous、JavaScript、And、XML(異步的 JavaScript 和 XML)
2、定義: Ajax不是一個技術(shù),它實際上是幾種技術(shù),每種技術(shù)都有其獨特這處,合在一起就成了一個功能強大的新技術(shù)
3、包括:
XHTML和CSS
使用文檔對象模型(DocumentObjectModel)作動態(tài)顯示和交互
使用XML和XSLT做數(shù)據(jù)交互和操作
使用XMLHttpRequest進行異步數(shù)據(jù)接收
使用JavaScript將它們綁定在一起
4、解釋:是使用客戶端腳本與Web服務(wù)器交換數(shù)據(jù)的Web應(yīng)用開發(fā)方法。這樣,Web頁面不用打斷交互流程進行重新加裁,就可以動態(tài)地更新。使用Ajax,你可以創(chuàng)建接近本地桌面應(yīng)用的,直接的、高可用的、更豐富的、更動態(tài)的Web用戶接口界面。
Ajax優(yōu)勢主要有以下幾點:
1.不需要插件支持(一般瀏覽器且默認(rèn)開啟 JavaScript 即可) ;
2.用戶體驗極佳(不刷新頁面即可獲取可更新的數(shù)據(jù)) ;
3.提升 Web 程序的性能(在傳遞數(shù)據(jù)方面做到按需放松,不必整體提交) ;
4.減輕服務(wù)器和帶寬的負(fù)擔(dān)(將服務(wù)器的一些操作轉(zhuǎn)移到客戶端) ;
Ajax 的不足有以下幾點:
1.不同版本的瀏覽器度 XMLHttpRequest 對象支持度不足(比如 IE5 之前);
2.前進、后退的功能被破壞(因為 Ajax 永遠在當(dāng)前頁,不會幾率前后頁面) ;
3.搜索引擎的支持度不夠(因為搜索引擎爬蟲還不能理解 JS 引起變化數(shù)據(jù)的內(nèi)容) ;
4.開發(fā)調(diào)試工具缺乏(相對于其他語言的工具集來說,JS 或 Ajax 調(diào)試開發(fā)少的可憐) 。
使用 Ajax 最關(guān)鍵的地方,就是實現(xiàn)異步請求、接受響應(yīng)及執(zhí)行回調(diào)。那么異步與同步有什么區(qū)別呢?
我們普通的 Web 程序開發(fā)基本都是同步的,意為執(zhí)行一段程序才能執(zhí)行下一段, 類似電話中的通話, 一個電話接完才能接聽下個電話; 而異步可以同時執(zhí)行多條任務(wù),感覺有多條線路,類似于短信,不會因為看一條短信而停止接受另一條短信。Ajax 也可以使用同步模式執(zhí)行, 但同步的模式屬于阻塞模式, 這樣會導(dǎo)致多條線路執(zhí)行時又必須一條一條執(zhí)行,會讓 Web 頁面出現(xiàn)假死狀態(tài),所以,一般 Ajax 大部分采用異步模式。
Google Suggest
在 2005 年,Google 通過其 Google Suggest 使 AJAX 變得流行起來。
Google Suggest 使用 AJAX 創(chuàng)造出動態(tài)性極強的 web 界面:當(dāng)您在谷歌的搜索框輸入關(guān)鍵字時,JavaScript 會把這些字符發(fā)送到服務(wù)器,然后服務(wù)器會返回一個搜索建議的列表。
實例展示:
先創(chuàng)建一個html文件:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> function checkname(){ if($('#name').val() == ""){ $('#msg').html("please enter the name!"); $('#name').focus; return false; } if($('#address').val() == ""){ $('#msg').html("please enter the address!"); $('#address').focus; return false; } ajax_post(); } function ajax_post(){ $.post("txt.php",{name:$('#name').val(),address:$('#address').val()}, //url鏈接txt.php function(data){ //$('#msg').html("please enter the name!"); //alert(data); $('#msg').html(data); }, "text"); } </script> </head> <body> <form id="ajaxform" name="ajaxform" method="post" action="txt.php"> <p> 姓名:<input type="text" name="name" id="name"/> </p> <p> 地址:<input type="text" name="address" id="address"/> </p> <p id="msg"></p> <p> <input name="Submit" type="button" value="submit" onclick="return checkname()"/> </p> </form> </body> </html>
在創(chuàng)建一個txt.php文件:
<?php $name = $_POST["name"]; $address = $_POST["address"]; echo $name."<br>"; echo $address."<br>"; ?>