国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用

AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用

又是一個(gè)拗口的標(biāo)題!既然是“無刷新”應(yīng)用,又何來“可刷新”的“無刷新” 應(yīng)用之說呢?其實(shí)一點(diǎn)也不怪——

問題

As we 都知道,所謂基于AJAX的“無刷新應(yīng)用”,一般就是指WEB應(yīng)用中利用XmlHttp組件來實(shí)現(xiàn)一定的基于JavaScript后臺異步數(shù)據(jù)傳遞的無刷新頁面切換,以代替?zhèn)鹘y(tǒng)的基于HTML鏈接的“有刷新”頁面切換。

這樣的無刷新效果真的很酷,但是愛思考的開發(fā)者嘗試一些時(shí)間之后就會發(fā)現(xiàn)一個(gè)最大的問題:我既然是無刷新了,那么對于一組無刷新的功能來說,也就是從打開網(wǎng)頁起,所有的效果都是在當(dāng)前頁面的后臺通過JavaScript異步調(diào)用XmlHttp來傳遞數(shù)據(jù)并替換當(dāng)前頁中的顯示內(nèi)容,沒有傳統(tǒng)的“有刷新”頁面切換。但是,如果在某個(gè)狀態(tài),因?yàn)榫W(wǎng)絡(luò)問題頁面暫停載入了需要手動刷新,或者,用戶想手動刷新一下當(dāng)前頁面獲取更新的數(shù)據(jù),或者哪怕是不小心按了一下“F5”或?yàn)g覽器上的Refresh按鈕會怎樣呢?對了,這就是本文的標(biāo)題提出的擔(dān)心。如果沒有特殊處理,那么,手動刷新頁面過后,網(wǎng)頁上的內(nèi)容自然就回到最初的顯示的內(nèi)容,而不是手動刷新之前我們真正想要的數(shù)據(jù)了。是不是心中突然又一口悶氣呢?:)大可不必~~

分析

對于以上問題,當(dāng)然是有解決辦法的!如著名的AJAX應(yīng)用網(wǎng)站http://www.backbase.com/就是一個(gè)很好的范例,大家可以親自體驗(yàn),無論在哪個(gè)頁面手動刷新,都不會發(fā)生我們前面擔(dān)心的問題~~發(fā)現(xiàn)沒有呢?發(fā)現(xiàn)其中的玄機(jī)沒?對了,就是“#”??!我們可以看到,每一次無刷新的頁面切換之后,瀏覽器地址欄的內(nèi)容都會改變,變成了什么呢?改變的內(nèi)容都是在相同的網(wǎng)址(對于BackBase,自然都是http://www.backbase.com/這個(gè)首頁了)之后,加上了#xxxx,這是什么呢?熟悉HTML的讀者該想起來了,什么時(shí)候會出現(xiàn)這個(gè)“#”呢?對了,就是對我們來說最可愛最熟悉的,我們的萬維網(wǎng)超鏈接的的鼻祖“<a>”。

不知道還有多少讀者記得“#”原本的用處,那就是當(dāng)前頁面的內(nèi)部定位功能。忘記了的朋友可以試試將下面的HTML建一個(gè)test.html,看看簡單的效果。

<a name="top">top</a>
<a href="#bottom">go to bottom</a>
<div style="height:800px"> </div>
<a name="middle">middle</a>
<a href="javascript:var tmp = document.location = ‘test.html#top‘">go to top</a>
<div style="height:800px"> </div>
<a name="bottom">bottom</a>
<a href="test.html#middle">go to middle</a>

如果href中指定的“#”后的內(nèi)name在指定頁中沒有定義,瀏覽器則簡單的定位到指定頁的頁首。除了以一個(gè)鏈接的形式來調(diào)轉(zhuǎn)之外,也可以通過修改document.location = ‘test.html#top’ 這樣的方式來重訂向。凡是這樣跳轉(zhuǎn)的頁面,因?yàn)閷?shí)際上還是在當(dāng)前頁面內(nèi),因此,網(wǎng)頁是不會有物理刷新的。OK,這就是我們實(shí)現(xiàn)“可刷新的無刷新應(yīng)用”的方案。

模式

作為一個(gè)設(shè)計(jì)模式,基于#鏈接的“可刷新的無刷新應(yīng)用”的方案對于任意的AJAX框架,或者直接使用未經(jīng)封裝的XmlHttp都是同等適用的。這就要求我們在執(zhí)行任意一個(gè)AJAX回調(diào)時(shí),注意利用#標(biāo)簽改變當(dāng)前頁的url地址,那么,當(dāng)用戶刷新頁面時(shí),由于url中#后的參數(shù)不同,就可以在刷新時(shí)通過解析和判斷當(dāng)前的#后的參數(shù)來獲得“可刷新的無刷新”效果。

題外話

今天將我的輕量級AJAX & JSRS框架AjaxHelper略作了修改封裝,同時(shí)提供一個(gè)支持ASP,PHP,JSP的Flat版本,感興趣的朋友可以在http://ilungasoft.com下載。

另外也談?wù)勗囉肁tlas的感想。總體來講,真正值的期待的還是對AJAX效果Web控件的數(shù)據(jù)綁定和事件的支持,只是現(xiàn)在一切都需要手動輸,并且是內(nèi)遷在HTML中的XML,使用不夠方便,希望正式版的時(shí)候能提供像其它Web控件那樣的可視化向?qū)?。除此以外,總體上沒感覺比Ajax.Net有太多本質(zhì)提高,也不見得比AjaxHelper使用更靈活。

posted on 2005-11-02 20:31 Teddy‘s Knowledge Base 閱讀(3480) 評論(12)  編輯 收藏 引用 收藏至365Key 所屬分類: Ajax

評論 # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2005-11-03 00:00 Learning .net Teddy,你在AjaxHelper Flat Ver 0.6 Reference里寫ajaxTemplate不用加后綴名,如.asp,但好象只有加了后綴才可以正常啊(至少在asp,win2003 iis6下是這樣的)。 另外對這篇文章《AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 》,你可不可以舉個(gè)例子啊。好象還維持刷新前的狀態(tài)不是很簡單的事情哦。 可能是我太笨了,沒有領(lǐng)會你的意思。  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2005-11-03 08:59 Teddy‘s Knowledge Base @Learning.net: Flat版中ajaxTemplate的確是必須包含文件完整路徑的,也就是說,必須是要回調(diào)的網(wǎng)頁的絕對或相對路徑,因?yàn)?,ASP.Net版使用UserControl來處理回調(diào),但Flat版可用于任意的環(huán)境,且其它環(huán)境可沒有UserControl這種東西,所以只能是網(wǎng)頁啦。 關(guān)于文中提到的這個(gè)模式,如果手動來實(shí)現(xiàn)的確是要對js比較了解的,為了簡化該過程,我寫了一個(gè)輔助類庫,當(dāng)然是js的,稍后會發(fā)布。這個(gè)輔助類庫將可用于包括AjaxHelper,Atlas在內(nèi)的任意的Ajax框架。  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2005-11-03 16:57 李天平 不太理解你說的,還是沒解決手動刷新的問題啊,這樣子按了一下“F5”或者點(diǎn)擊一個(gè)button依然會刷新啊,還是回頭原始狀態(tài)了?。?nbsp; 回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2005-11-03 18:02 Teddy‘s Knowledge Base @李天平: 你可以看看http://www.backbase.com/ 我的站點(diǎn)上的demo是很久前寫的,還沒有實(shí)現(xiàn)該模式!  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-03-23 18:59 e we  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-03-23 18:59 e 不錯(cuò)  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-03-26 23:12 ertgerfgt xzcdxcv  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-03-26 23:13 dfgdf dfgdfgfdg  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-08-09 15:19 shengnet 這個(gè)例子在FireFox中顯示不正常。 還有就是一個(gè)頁面如果用了兩個(gè)Ajaxhelper.update2("","")后,只能保存一個(gè)的狀態(tài).  回復(fù)    # 希望增加新功能 2006-08-09 16:32 shengnet 希望加入后退前進(jìn)按鈕的狀態(tài)  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-08-09 16:45 shengnet 是否能給,update再設(shè)立一個(gè)參數(shù),如“state”,這個(gè)參數(shù)是顯示loading的地方。這樣可以訂制loading的顯示位置。  回復(fù)    # re: AJAX設(shè)計(jì)模式 之 怎樣構(gòu)建一個(gè)可刷新的無刷新應(yīng)用 2006-08-11 14:16 shengnet Ajaxhelp.js中的源碼 Function.prototype.bind = function() {}什么意思!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
做了兩個(gè)月ajax,總結(jié)一些小經(jīng)驗(yàn)
ajax實(shí)現(xiàn)動態(tài)網(wǎng)頁靜態(tài)化
AJAX 簡介
【原創(chuàng)】我是怎么從零開始教女同學(xué)進(jìn)行php開發(fā)的(4)
利用JSON實(shí)現(xiàn)Ajax動態(tài)加載下拉列表框
ajax讀取txt文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服