校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > 完成了AJAX樹附原理分析

完成了AJAX樹附原理分析

熱門標(biāo)簽:澳大利亞城市地圖標(biāo)注 遼寧銀行智能外呼系統(tǒng) 電銷機(jī)器人違法了嗎 辰溪地圖標(biāo)注 許昌智能電銷機(jī)器人公司 海南銀行智能外呼系統(tǒng)商家 姜堰電銷機(jī)器人 遼寧正規(guī)電銷機(jī)器人 上海浦東騰訊地圖標(biāo)注位置
首先要糾正一個(gè)上篇博文《Rails中的Ajax初體驗(yàn)》中的一個(gè)錯(cuò)誤:上篇博文中,我說“要在Rails中使用Ajax,局部模板是必須的”,經(jīng)實(shí)踐檢驗(yàn),是錯(cuò)誤的,特此更正。實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),此言不虛。經(jīng)過項(xiàng)目中真正通過RJS實(shí)現(xiàn)AJAX樹,可知,通過使用insert_html、replace_html等輔助方法,可直接操作頁面上的元素,無須使用局部模板。
整個(gè)的實(shí)現(xiàn)過程還是有點(diǎn)曲折:

之前使用的生成樹結(jié)構(gòu)的頁面,是利用從服務(wù)器獲取的所有數(shù)據(jù),通過一系列javascript腳本函數(shù),一次性地生成整個(gè)樹結(jié)構(gòu)目錄。這種方式對(duì)付系統(tǒng)的功能菜單還游刃有余,但是要生成包含上千條數(shù)據(jù)的樹結(jié)構(gòu)時(shí),客戶端的瀏覽器需要十幾秒鐘才能把整個(gè)樹結(jié)構(gòu)建立起來、顯示在頁面上,這對(duì)于用戶來說是不可忍受的——其實(shí)對(duì)于我們開發(fā)者來說,也是不可忍受的。那么一個(gè)可行的辦法就是,利用AJAX技術(shù),先顯示樹結(jié)構(gòu)的第一級(jí)節(jié)點(diǎn),當(dāng)點(diǎn)擊某個(gè)節(jié)點(diǎn)時(shí),再從服務(wù)器獲取該節(jié)點(diǎn)的子節(jié)點(diǎn),顯示出來。這樣,每次與服務(wù)器交互的數(shù)據(jù)量不大,加快了頁面響應(yīng)。

一開始我打算利用RAILS中的AJAX機(jī)制,配合使用之前那個(gè)版本中的javascript函數(shù)。但是那個(gè)版本的思路,是基于從服務(wù)器獲取的樹結(jié)構(gòu)數(shù)據(jù),通過循環(huán)、遞歸,在服務(wù)器端生成好要在客戶端頁面執(zhí)行的一系列javascript函數(shù)調(diào)用,以生成樹結(jié)構(gòu)。至此,還算是比較符合AJAX的思路,但是下一步就大相徑庭了:舊版本的是將生成的那一大串javascript函數(shù)調(diào)用的字符串,一次性地完全返回給客戶端頁面,客戶端頁面在加載前,已經(jīng)獲得了這一大串字符串,只需簡(jiǎn)單地把它加載,就一次性的執(zhí)行它、生成樹結(jié)構(gòu)了。這種方式,等于沒有給AJAX留下插足的任何機(jī)會(huì)。

此路不通,于是我轉(zhuǎn)而尋找網(wǎng)上別人做的AJAX樹,試圖將其移植過來,為我所用。之前就找到過一個(gè).NET版的,用C#寫的,還沒仔細(xì)看過。于是打開VS2005,建好了ASPX工程,研究了一下這個(gè).NET版的AJAX樹。這個(gè)版本自帶了一個(gè)ACCESS數(shù)據(jù)庫,里面有一些演示數(shù)據(jù)。把IIS架起來后,運(yùn)行得還真挺順暢。這個(gè)AJAX樹的功能做得還挺強(qiáng),可以實(shí)現(xiàn)在頁面上對(duì)樹節(jié)點(diǎn)的添加、刪除、編輯、拖拽移動(dòng)操作。代碼也比較清晰:一個(gè)htm頁面和一個(gè)aspx頁面,其中aspx頁面中定義了一些服務(wù)器端函數(shù),組織出相應(yīng)的要返回給htm頁面的html代碼段。然而,要把這個(gè)移植過來也不容易,首先是對(duì)其生成html代碼段的思路不熟悉,不好控制,另外一點(diǎn),它是通過response.write返回所生成的html代碼段,與RJS中直接指定頁面元素進(jìn)行控制的思路又不一樣。

也是由于通過對(duì)以上兩種方式的探索,使得我對(duì)做AJAX樹的思路更加清晰的原因吧,我最終決定還是自己動(dòng)手,完全自己做一個(gè)RAILS下的出來吧。盡管最終從核心內(nèi)容到細(xì)節(jié)控制,總算是把這棵樹給搗騰出來了,但中間遇到幾個(gè)問題,有的不知道是否RAILS本身就不支持,還有的明明書上、別人都行得通,但我這就是不行。不知個(gè)中緣由,列在這里,若有人能夠解答,還望不吝賜教!謝過先!

問題一:用RJS的insert_html輔助方法,無法在一個(gè)table最后添加一行(即tr>),即使寫一個(gè)簡(jiǎn)單的測(cè)試程序也不行。最后,我是用div和span做容器,向其中添加table來解決的,即樹的每個(gè)節(jié)點(diǎn)都用一個(gè)只有一行的table來裝載。

問題二:在使用RJS時(shí),在“render :update”代碼段,只能是單純的一句調(diào)用輔助方法的語句,其它的,無論是加點(diǎn)if判斷,還是再使用另外一個(gè)輔助方法,代碼全都失效。本想先用insert_html添加元素,再用call調(diào)用javascript函數(shù)之類,完全行不通,最終是預(yù)先在要插入元素的地方放置一個(gè)空的容器,然后換用replace_html,將容器中的空內(nèi)容“換”成返回的html代碼段,也達(dá)到了添加頁面元素的效果。

問題三:這個(gè)是最為奇怪的問題了。當(dāng)我組合待返回的html元素的代碼時(shí),由于該元素還要繼續(xù)帶有AJAX鏈接,故本想用“#{}”將Ruby代碼嵌入——這種方法理論上講是可行的,可我在實(shí)際操作中,記得好像只成功了一兩次,基本上都實(shí)現(xiàn)不了AJAX效果(實(shí)際上是沒效果)。無奈之下,我根據(jù)頁面初始顯示的第一級(jí)樹節(jié)點(diǎn),查看了頁面代碼,看到了生成的AJAX代碼,再依照它的樣子,替換掉我本來想用Ruby代碼的部分——也就是說,我最終不是用嵌入的Ruby代碼,而是直接寫出將要生成的AJAX代碼——這樣的代碼是多么的丑陋啊!

不過,整個(gè)過程下來,還是略有一些可以總結(jié)的東西:

總結(jié)一:由于樹節(jié)點(diǎn)中要顯示的文本中,有的會(huì)有加號(hào)“+”,而恰巧該文本還是要向服務(wù)器發(fā)送的參數(shù),這種情況下,在組合要返回的html代碼段時(shí),加號(hào)會(huì)被當(dāng)作連接字符串的操作,那么在必要的地方,則把加號(hào)替換成其它不會(huì)被誤解的符號(hào),如下劃線“_”,而在傳給數(shù)據(jù)庫做查詢用時(shí),再替換回來。Ruby中將字符串中的模式替換成指定內(nèi)容的函數(shù)是gsub,如:str.gsub("+","_"),就是把str中的加號(hào)替換成下劃線。該函數(shù)的第一個(gè)參數(shù)也可以是正則表達(dá)式。

總結(jié)二:對(duì)于頁面上要顯示的每一個(gè)樹節(jié)點(diǎn),都用一個(gè)只有一行的table來控制,這樣做有一個(gè)好處,就是每個(gè)節(jié)點(diǎn)都可以獨(dú)立地控制顯示位置,而不用考慮colspan屬性,只需在前面添加指定個(gè)數(shù)的td即可,具體做法見“總結(jié)三”。

總結(jié)三(控制樹節(jié)點(diǎn)的顯示級(jí)別位置的方法):點(diǎn)擊樹節(jié)點(diǎn),向服務(wù)器發(fā)送該節(jié)點(diǎn)的ID,從而獲取該節(jié)點(diǎn)的子節(jié)點(diǎn)。與此同時(shí),還要返回一個(gè)本節(jié)點(diǎn)的級(jí)別(頁面初始顯示的第一級(jí)節(jié)點(diǎn)的級(jí)別為0)。在生成子節(jié)點(diǎn)的html代碼段時(shí),得到父節(jié)點(diǎn)的級(jí)別,加上1,即為子節(jié)點(diǎn)的級(jí)別。根據(jù)級(jí)別數(shù)做循環(huán),向包含子節(jié)點(diǎn)內(nèi)容的table中添加相應(yīng)個(gè)數(shù)的td。在所添加的td中,填入若干空格(nbsp;)(數(shù)量自定,一般2~3個(gè)為宜),但是空格只有與td配合使用效果才好,否則容易錯(cuò)位。或者事先用windows的畫圖工具做一個(gè)白色小方塊的bmp文件(方塊大小根據(jù)已有的在樹的節(jié)點(diǎn)前面表示展開、收攏節(jié)點(diǎn)的圖片設(shè)定),然后在td中嵌入這個(gè)小方塊圖片也行。如某個(gè)二級(jí)節(jié)點(diǎn),其html代碼段為:table>tr>td>nbsp;nbsp;/td>td>二級(jí)節(jié)點(diǎn)/td>/tr>/table>。
您可能感興趣的文章:
  • ajax 技術(shù)和原理分析
  • 談?wù)凙jax原理實(shí)現(xiàn)過程
  • Ajax的內(nèi)部實(shí)現(xiàn)機(jī)制、原理與實(shí)踐小結(jié)
  • Ajax工作原理深入理解
  • jquery的ajax跨域請(qǐng)求原理和示例
  • ajax 文件上傳應(yīng)用簡(jiǎn)單實(shí)現(xiàn)
  • Ajax方式提交帶文件上傳的表單及隱藏iframe應(yīng)用
  • Ajax+asp應(yīng)用實(shí)例 注冊(cè)模塊,表單提交
  • AngularJS入門教程之與服務(wù)器(Ajax)交互操作示例【附完整demo源碼下載】
  • Ajax PHP簡(jiǎn)單入門教程代碼
  • Ajax原理與應(yīng)用案例快速入門教程

標(biāo)簽:西藏 威海 深圳 銅川 伊春 晉城 撫州 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《完成了AJAX樹附原理分析》,本文關(guān)鍵詞  完,成了,AJAX,樹附,原理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《完成了AJAX樹附原理分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于完成了AJAX樹附原理分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久美女高清视频| 黄色日韩三级电影| 日韩欧美在线综合网| 亚洲在线视频免费观看| 欧美精品777| 免费高清在线一区| 日韩丝袜美女视频| 盗摄精品av一区二区三区| 欧美偷拍一区二区| 欧美国产欧美综合| 欧美男男青年gay1069videost| 日本大胆欧美人术艺术动态| 久久精品一二三| 一本色道a无线码一区v| 亚洲激情自拍视频| 日韩免费看的电影| 91原创在线视频| 日韩av中文字幕一区二区三区| 精品人在线二区三区| av不卡免费在线观看| 热久久免费视频| 国产精品久久三区| 日韩午夜在线观看| 99在线精品观看| 国产一区二区不卡在线 | 欧美丝袜丝交足nylons图片| 亚洲激情一二三区| 国产网站一区二区| 欧美精品久久一区| 91视频你懂的| 国产麻豆精品久久一二三| 午夜精品影院在线观看| 国产精品久久久久桃色tv| 欧美一区二区在线不卡| 国产精品亚洲综合一区在线观看| 亚洲午夜在线电影| 中文字幕中文字幕在线一区| 日韩欧美国产1| 欧美日韩免费视频| 国产成人精品免费看| 奇米综合一区二区三区精品视频 | 亚洲综合精品久久| 欧美国产乱子伦| 精品久久久久久综合日本欧美| 欧美性猛交xxxxxx富婆| av一区二区三区四区| 免费精品99久久国产综合精品| 久久综合久久综合久久| 中文字幕在线观看不卡| 国产一区二区网址| 国内外成人在线视频| 国产在线视频一区二区| 国产乱色国产精品免费视频| 国产成人在线视频免费播放| 国产成人精品在线看| 成人av在线资源网站| 色综合久久久久综合| 91精品福利视频| 欧美美女喷水视频| 欧美二区三区的天堂| 欧美一区二区三区精品| 日韩欧美国产麻豆| 国产视频一区二区在线观看| 国产日韩欧美精品一区| 国产精品成人一区二区艾草| 亚洲乱码国产乱码精品精98午夜| 亚洲一区二区高清| 欧美96一区二区免费视频| 国产一区二区三区美女| 99久免费精品视频在线观看| 欧美日韩的一区二区| 日韩欧美亚洲另类制服综合在线| 精品欧美一区二区三区精品久久 | 国产精品一区二区在线观看网站| 粉嫩av亚洲一区二区图片| jizzjizzjizz欧美| 欧美日韩一区二区三区视频 | 综合在线观看色| 亚洲国产日产av| 精品中文av资源站在线观看| 成人国产精品视频| 欧美日韩午夜影院| 久久久久一区二区三区四区| 亚洲精品视频一区二区| 精品一区二区三区在线观看国产 | 欧美一区二区在线看| 国产精品网站一区| 亚洲a一区二区| 久久99久国产精品黄毛片色诱| 国产成人精品影视| 欧美亚洲免费在线一区| 久久免费偷拍视频| 美女视频一区二区| 亚洲伊人色欲综合网| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产91综合一区在线观看| 欧美视频日韩视频| 国产色爱av资源综合区| 亚洲福利国产精品| 国产精品69久久久久水密桃| 欧美日韩一区二区在线观看 | 亚洲大片免费看| 久久成人av少妇免费| 91网站最新网址| 欧美tickling网站挠脚心| 亚洲精品成a人| 国产精品亚洲第一区在线暖暖韩国 | 日韩福利视频网| av午夜精品一区二区三区| 日韩精品一区二区三区swag| 一区二区三区中文免费| 国产白丝网站精品污在线入口 | 国产精品理伦片| 免费人成精品欧美精品| 99精品久久久久久| 国产视频一区二区在线观看| 免费在线观看一区二区三区| 欧美视频中文字幕| 亚洲欧美激情小说另类| 国产乱人伦偷精品视频不卡| 欧美日韩国产在线观看| 亚洲色图在线看| 成人综合在线观看| 久久久久亚洲蜜桃| 久久66热re国产| 欧美一区二区黄| 亚洲福利电影网| 欧美日韩亚洲国产综合| 一区二区不卡在线播放 | 亚洲精品一区二区三区蜜桃下载| 亚洲成在线观看| 欧洲一区二区av| 亚洲自拍偷拍网站| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲品质自拍视频网站| 国产99久久久国产精品潘金网站| 久久久一区二区| 国产精品一区二区果冻传媒| 精品日本一线二线三线不卡| 日本va欧美va瓶| 日韩三级av在线播放| 免费人成精品欧美精品| 日韩欧美亚洲国产另类| 极品少妇xxxx精品少妇| 精品久久久久久久久久久久久久久久久| 五月激情六月综合| 51午夜精品国产| 美国欧美日韩国产在线播放| 欧美一级黄色片| 精品中文字幕一区二区小辣椒| 久久综合久久99| 成人影视亚洲图片在线| 国产精品电影一区二区三区| 99精品视频在线免费观看| 中文字幕制服丝袜一区二区三区| 97精品久久久久中文字幕| 一区二区在线观看免费| 99久久免费视频.com| 一区二区三区**美女毛片| 欧美精品久久天天躁| 捆绑变态av一区二区三区| 久久久久久亚洲综合影院红桃 | 欧美久久高跟鞋激| 男男成人高潮片免费网站| www国产精品av| www.色精品| 婷婷综合五月天| 久久综合九色综合97婷婷| 国产福利一区在线| 亚洲精品乱码久久久久久黑人 | 日韩一区中文字幕| 波波电影院一区二区三区| 一区二区三区四区在线| 在线不卡中文字幕| 粉嫩高潮美女一区二区三区| 一区二区三区在线视频免费观看| 欧美一区二区三区免费大片| 国产呦精品一区二区三区网站| 中文字幕一区在线观看| 91精品国产一区二区三区| 国产精品天天摸av网| 欧美色涩在线第一页| 国精品**一区二区三区在线蜜桃| 国产精品久久免费看| 欧美网站一区二区| 国产一区二区成人久久免费影院 | 欧美精品一区二区三| 成年人网站91| 婷婷综合另类小说色区| 中文一区二区完整视频在线观看| 欧美性感一类影片在线播放| 国产精品一区在线| 亚洲电影一区二区| 欧美激情中文字幕| 337p亚洲精品色噜噜噜| 97se亚洲国产综合在线| 精品在线你懂的| 视频一区视频二区中文字幕| 久久久一区二区三区捆绑**| 欧美日韩国产在线观看|