dTree無限級目錄樹和JQuery同步ajax請求
以前都是用JQuery對樹的支援來實現目錄樹的,近來閒來無事就弄了下dTree,感覺其無限級目錄還是挺好的,而且它的使用也比較方便,基本上就是先把要用的js檔案即dtree.js和css檔案dtree.css引入,另外就是它預設的圖片,當然這些圖片都是可以自己指定的,它的css樣式也可以自己改變的!
關於dTree就先談談它的node,dTree的node的構造方法可以指定下列引數,
id //唯一標識,數字型 pid//父節點的id,如果是根結點那就只能是-1,一般來講只有一個最頂層的根結點 name//結點的名字,字串型別,在頁面上顯示出來的標籤. url//字串型別,表示當點選該葉子結點的時候訪問哪個URL. title//title,字串型別,滑鼠進入時顯示的字串. target//字串型別,超連結的目標位置. icon //字串型別,表示該結點圖示的圖片路徑,不指定則使用預設的 iconOpen//結點開啟時候的圖片路徑,不指定則使用預設的 open//boolean型別,表示初始狀態是否是開啟的
如:
mytree.add(1, 0, `My node`, `node.html`, `node title`, `mainframe`, `img/musicfolder.gif`);
有了node以後就是構建樹了
//引入了dtree.js後,就可以使用new dTree()了 myTree = new dTree();//這樣就新建了一個dTree了, //新建了dTree以後就是把剛建的node給添進去了, mytree.add(1, 0, `My node`, `node.html`, `node title`, `mainframe`, `img/musicfolder.gif`);
在最後還可以指定一些配置引數:
target//所有結點的目標 folderLinks//非葉子結點是否也是可以連結的,預設是true useSelection//結點是否可以被選擇,預設true. useCookies//是否使用cookies來記錄當前樹的狀態,預設是true useLines//是否用線來畫樹,預設是true useIcons//是否使用圖示來構建樹,預設是true useStatusText//是否在狀態列顯示結點的名字,而不是在URL的位置顯示,預設是false closeSameLevel//是否同時只能有一個資料夾處於開啟狀態,預設為false,當為true的時候關閉所有的資料夾和開啟所有的資料夾將不會起作用 inOrder//是否先新增父結點再新增子節點, 預設為false,為true可以加快載入速度 //例如: mytree.config.target = "mytarget";
像這些結點的相關資訊,我們一般都是要從後臺來得到的,或者從資料庫,或者從配置檔案,如果加上覆雜的許可權控制就得每次都到後臺取一次了,
而從後臺得到這些資料的話一般常用的是以ajax請求取得json格式的資料,然後在頁面上就可以非常方便的使用了,但是使用ajax請求的時候
就會有一個問題出現了,那就是一般的ajax請求都是非同步的,這時候,頁面不會等ajax的請求返回就已經往下面執行了,等ajax請求返回的時候
頁面已經不能再使用其返回的資料進行操作了,所以這個時候需要使用ajax的同步請求了!ajax的同步請求很簡單隻要在ajax的請求的時候加上一個
區別於ajax請求型別的引數就行了,一般都是async,像JQuery的用法就是這樣的:
$.ajax( { url : "module/geneMenu", async : false//同步,等這個請求完成後才繼續往下執行,這樣myTree才能使用返回來的資料 });
使用了ajax的同步請求以後,頁面在解析到ajax請求的時候就會等ajax請求返回以後再繼續往下面執行,這樣就可以利用
ajax的返回值來進行對dTree的node的操作了!
還有一個問題就是我們常常會利用Frame來將頁面進行佈局成左邊是menu欄,而右邊是主頁面,上邊是一些基本資訊這樣的結構
這樣我們就需要在點選menu欄的葉子結點時,在mainFrame裡面顯示請求返回後的內容,其實要實現這個要求挺簡單的,只需要
把node的target指定為mainFrame的name即可
下面是一段完整的程式碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>menu</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <link rel="stylesheet" type="text/css" href="css/dtree.css"> <style type="text/css"> html,body { background:#afa; } </style> <script type="text/javascript" src="js/dtree.js"></script> <script type="text/javascript" src="js/jquery.js"></script> </head> <body> <div> <script type="text/javascript"> myTree = new dTree(`myTree`); $.ajax( { url : "module/geneMenu", async : false,//同步,等這個請求完成後才繼續往下執行,這樣myTree才能使用返回來的資料 dataType: "json", success: function(myData) { for ( var i = 0; i < myData.length; i++) { var obj = myData[i]; //right是window.parent的一個frame的name myTree.add(obj.id, obj.parentId, obj.name, obj.url, obj.name, "right"); } document.write(myTree); } }); myTree.config.target = "right";//right是window.parent的一個frame的name myTree.config.useCookies = false; myTree.config.inOrder = true; </script> </div> </body> </html>
相關文章
- KKB : Jquery實現Ajax請求jQuery
- React 中用jQuery的ajax 和 axios請求資料ReactjQueryiOS
- jquery Ajax 請求錯誤 Unexpected tokenjQuery
- jQuery的AJAX請求中contentType和dataType的區別jQuery
- 基於jQuery的三種AJAX請求jQuery
- jQuery裡如何使用ajax傳送請求jQuery
- 學習AJAX必知必會(4)~JQuery傳送Ajax請求jQuery
- ajax請求
- 跨域請求之jQuery的ajax jsonp的使用解惑跨域jQueryJSON
- ajax中設定請求頭和自定義請求頭
- ajax請求 juery
- jquery.validate手動呼叫校驗,便於ajax請求jQuery
- 記錄Ajax請求報415與404問題
- 生存目錄-無層級
- 原生ajax請求&JSONPJSON
- springmvc處理ajax請求SpringMVC
- 封裝ajax、axios請求封裝iOS
- 非同步請求xhr、ajax、axios與fetch的區別比較非同步iOS
- 關於非同步AJAX請求執行速度過快問題非同步
- jQuery Validate非同步ajax方式驗證jQuery非同步
- 解決 jquery使用ajax請求發生跨域問題的辦法jQuery跨域
- 原生js實現Ajax請求,包含get和postJS
- ajax請求servlet返回資料Servlet
- 如何傳送請求以及AJAX
- Ajax請求後臺資料
- ajax中POST請求與引數(請求體)設定
- rsync 同步目錄
- ajax--實現非同步請求,接受響應及執行回撥非同步
- layui-tree實現Ajax非同步請求後動態新增節點UI非同步
- vue2.0 axios post請求傳參問題(ajax請求)VueiOS
- jQuery – AJAX get() 和 post() 方法jQuery
- ajax請求下載excel檔案Excel
- 利用fetch方法實現Ajax請求
- 基於jq封裝ajax請求封裝
- AJAX同步和非同步區別非同步
- axios,Ajax,jQuery ajax,axios和fetch的區別iOSjQuery
- ajax 請求的時候 get 和 post 方式的區別?
- 【jQuery】ajax請求成功,狀態卻是200jQuery
- jQuery AjaxjQuery