服務熱線
153 8323 9821
本系列文章將帶您進入jQuery的精彩世界, 其中有很多作者具體的使用經(jīng)驗和解決方案, 即使你會使用jQuery也能在閱讀中發(fā)現(xiàn)些許秘籍.
本篇文章講解如何使用jQuery方便快捷的實現(xiàn)Ajax功能.統(tǒng)一所有開發(fā)人員使用Ajax的方式.
Ajax讓用戶頁面豐富起來, 增強了用戶體驗. 使用Ajax是所有Web開發(fā)的必修課. 雖然Ajax技術并不復雜, 但是實現(xiàn)方式還是會因為每個開發(fā)人員的而有所差異.jQuery提供了一系列Ajax函數(shù)來幫助我們統(tǒng)一這種差異, 并且讓調(diào)用Ajax更加簡單.
首先通過實例, 來看一下jQuery實現(xiàn)Ajax有多簡單. 下面是一個使用原始Ajax的示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery Ajax</title> <script type="text/javascript"> $(function() { var xhr = new AjaxXmlHttpRequest(); $("#btnAjaxOld").click(function(event) { var xhr = new AjaxXmlHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { document.getElementById("divResult").innerHTML = xhr.responseText; } } xhr.open("GET", "data/AjaxGetCityInfo.aspx?resultType=html", true); xhr.send(null); }); }) //跨瀏覽器獲取XmlHttpRequest對象 function AjaxXmlHttpRequest() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("您的瀏覽器不支持AJAX!"); return false; } } } return xmlHttp; } </script> </head> <body> <button id="btnAjaxOld">原始Ajax調(diào)用</button><br /> <br /> <div id="divResult"></div> </body> </html>
上面的實例中, data/AjaxGetCityInfo.aspx?resultType=html 地址會返回一段HTML代碼.
使用原始Ajax, 我們需要做較多的事情, 比如創(chuàng)建XmlHttpRequest對象, 判斷請求狀態(tài), 編寫回調(diào)函數(shù)等.
而用jQuery的Load方法, 只需要一句話:
$("#divResult").load("data/AjaxGetCityInfo.aspx", { "resultType": "html" });
曾經(jīng)我是一個原始Ajax的絕對擁護者, 甚至摒棄微軟的Asp.net Ajax, 因為我想要最高的代碼靈活度. 使用原始Ajax讓我感覺完成自己的工作更加輕松, 即使多寫了一些代碼. 但是當我去翻看別人的Ajax代碼并且嘗試修改的時候, 我改變了我的看法--我們的代碼到處分布著創(chuàng)建XmlHttpRequest方法的函數(shù), 或者某些Ajax程序邏輯性和結構性很差, 很難看懂.
我們可以將通用方法放到一個js文件中, 然后告訴大家"嘿伙伴們, 都來用這個js中的方法". 但是在某些時候有些新來的外包人員并不知道有這個js文件的存在. 而且其實這個通用的js就是一個公共的腳本類庫, 我相信沒有人會覺得自己開發(fā)一個類庫會比jQuery更好!
所以我放棄了制造輪子的計劃, 大家都使用jQuery編寫Ajax相關的方法就可以解決各種差異性問題, 并且讓工作更有效率.
現(xiàn)在只是用jQuery的Ajax函數(shù), 我的頁面變得簡潔了:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery Ajax</