不可否認(rèn),我是非常看好AJAX技術(shù)的。我以為AJAX技術(shù)對(duì)于互聯(lián)網(wǎng),就像HTML對(duì)于互聯(lián)網(wǎng)一樣。但同時(shí)又要看到,AJAX技術(shù)不能完全取代我們常規(guī)的WEB開(kāi)發(fā)技術(shù)。AJAX技術(shù)有它讓人眼睛一亮的優(yōu)點(diǎn),同時(shí)它也有很多弱點(diǎn)。我們作為開(kāi)發(fā)人員,不能因?yàn)锳JAX技術(shù)好,就在WEB開(kāi)發(fā)中全部使用AJAX。
對(duì)了,不能為了AJAX而AJAX,就像鋼要用到刀刃上一樣,AJAX應(yīng)該用在能充分發(fā)揮它的優(yōu)點(diǎn)的地方。而大多數(shù)的時(shí)候,我們還需要和往常一樣,使用MVC的實(shí)現(xiàn)STRUTS開(kāi)發(fā)框架。
提到AJAX,不能不提到與它一起被強(qiáng)調(diào)的另一個(gè)詞:用戶(hù)體驗(yàn)。AJAX豐富了B/S模式的表現(xiàn)層,對(duì)于B/S模式的UI來(lái)說(shuō),它號(hào)稱(chēng)沒(méi)有做不到、只有想不到。這里說(shuō)來(lái)說(shuō)去,都是一個(gè)用戶(hù)體驗(yàn)的問(wèn)題。AJAX號(hào)稱(chēng)無(wú)刷新,其實(shí)很多時(shí)候,用戶(hù)需要有刷新才能知道有了頁(yè)面提交,如在保存數(shù)據(jù)的時(shí)候,所以在這個(gè)時(shí)候使用AJAX卻有害于用戶(hù)體驗(yàn)的。
那么在什么時(shí)候可能使用到AJAX呢?第一、請(qǐng)求的提交是為了頁(yè)面數(shù)據(jù)的顯示,這時(shí)候用戶(hù)一般不希望看到頁(yè)面的刷新,是使用AJAX的一個(gè)最佳時(shí)候。第二、如果請(qǐng)求提交后,用戶(hù)能從頁(yè)面感覺(jué)到提交結(jié)果,這時(shí)候,也最好不要有頁(yè)面刷新,推薦使用AJAX技術(shù)。第三、如果請(qǐng)求提交后,用戶(hù)不能從頁(yè)面感覺(jué)到提交動(dòng)作,如絕大多數(shù)時(shí)候的數(shù)據(jù)的增加和修改,這時(shí)候則需要頁(yè)面刷新,不能使用AJAX技術(shù)。第四、復(fù)雜的UI,以前對(duì)于復(fù)雜的C/S模式的UI,B/S模式一向采取逃避的方法,現(xiàn)在則可以放心大膽的使用AJAX來(lái)加以解決。
AJAX技術(shù)的實(shí)踐,就像有了魔法一樣,一旦你使用了一次,就會(huì)愛(ài)不釋手。面對(duì)精彩的AJAX技術(shù),還等什么?趕快看看您的WEB應(yīng)用里,有沒(méi)有下列問(wèn)題之一,如果有的話,不妨用AJAX試試看!
第一、輸入值校驗(yàn)的問(wèn)題
輸入校驗(yàn)是我們經(jīng)常遇到的問(wèn)題,這種問(wèn)題很多時(shí)候是可以在JS里解決。但有些時(shí)候卻需要訪問(wèn)后臺(tái),如在申請(qǐng)用戶(hù)的時(shí)候檢查用戶(hù)名是否重復(fù)等等問(wèn)題。用AJAX吧,頁(yè)面不會(huì)有刷新。
第二、級(jí)聯(lián)顯示的問(wèn)題
這種問(wèn)題應(yīng)該是我們遇到的最多的表現(xiàn)層的問(wèn)題,常常讓我們左右為難:你說(shuō)訪問(wèn)后臺(tái)吧,頁(yè)面需要刷新,用戶(hù)體驗(yàn)很不好;你說(shuō)用JS解決吧,確實(shí)有點(diǎn)讓JS勉為其難,強(qiáng)行用JS解決了,代碼一大堆不說(shuō),數(shù)據(jù)量大的話還會(huì)有內(nèi)存問(wèn)題,而且數(shù)據(jù)也不安全。
這類(lèi)的問(wèn)題很多:最常見(jiàn)的是級(jí)聯(lián)的兩個(gè)或更多的選擇框,還有選擇框的變形,級(jí)聯(lián)菜單,導(dǎo)航樹(shù)等等。
遇到了這一類(lèi)的問(wèn)題,趕快行動(dòng)吧!用AJAX訪問(wèn)后臺(tái),既不需要刷新頁(yè)面,也沒(méi)有過(guò)多的JS代碼,一舉兩得。
第三、請(qǐng)求結(jié)果只改變部分頁(yè)面
這一類(lèi)的問(wèn)題我們也會(huì)時(shí)常碰到,如,論壇的回復(fù)帖子和帖子列表在一個(gè)頁(yè)面上的時(shí)候。這兩個(gè)UI在一個(gè)頁(yè)面上,用戶(hù)體驗(yàn)比回復(fù)帖子在另外一個(gè)頁(yè)面好。但回復(fù)后要對(duì)整個(gè)頁(yè)面進(jìn)行刷新,這種感覺(jué)就不好了。你看,那么大一個(gè)帖子列表,只增加你的一個(gè)回復(fù),卻要對(duì)整個(gè)頁(yè)面進(jìn)行刷新,不管從哪個(gè)角度來(lái)看都不好。
這一類(lèi)的問(wèn)題不管是用戶(hù)體驗(yàn),還是從技術(shù)的角度來(lái)講,都是使用AJAX最好不過(guò)。
第四、由于技術(shù)原因而使用iframe的問(wèn)題
Iframe的問(wèn)題純粹是由于技術(shù)的原因引起的。為了解決技術(shù)問(wèn)題而引入iframe,卻iframe的一再嵌套卻又引入了其他的技術(shù)難題。有的想盡辦法來(lái)勉強(qiáng)解決這個(gè)問(wèn)題,有的卻干脆不要使用iframe。不使用iframe,而使用JS的解決方法卻是繁瑣的?,F(xiàn)在不用左右為難了,使用AJAX就是最好的解決方案。
第五、數(shù)據(jù)錄入和列表顯示在同一個(gè)頁(yè)面
C/S模式的UI中常常有數(shù)據(jù)錄入和數(shù)據(jù)列表顯示在同一個(gè)界面上,這樣對(duì)于用戶(hù)來(lái)說(shuō)有很好的用戶(hù)體驗(yàn),用戶(hù)錄入的結(jié)果馬上就能在同一界面顯示。但是在B/S的UI上,由于需要提交刷新的問(wèn)題,我們經(jīng)常把數(shù)據(jù)的錄入和數(shù)據(jù)顯示分別放在兩個(gè)不同的頁(yè)面上。很顯然,這樣的用戶(hù)體驗(yàn)肯定沒(méi)有C/S模式來(lái)得好。像這樣的問(wèn)題還有很多,在B/S模式下,都因?yàn)榧夹g(shù)的原因而選擇其他的解決辦法?,F(xiàn)在我們可以自豪的使用AJAX來(lái)宣告可以做出和C/S模式一樣復(fù)雜的UI了。
第六、翻頁(yè)問(wèn)題
如果有技術(shù)可以使翻頁(yè)不需要刷新,你愿不愿意嘗試一下呢?有很多這樣的數(shù)據(jù)顯示的問(wèn)題需要刷新哦,考慮一下AJAX!