`

jqueryEasyUI关于"datatye"引发的血案

 
阅读更多
项目改版,用到jqueryEasyUI.
后台权限json树写好之后,前台一直出不来。
但是直接用数据文件,却可以,但也是慢。
思考半天查了半天,最后发现前台js遍历json时,没有加入datatype格式。
悲剧的形成---js通过便利json出来的树,可是datatye没加入json格式,就用了字符串的长度,来遍历。字符长为20000+,就循环20000+次。
还有一种解决方法,在后台程序里写入response.setContentType("text/json;charset=UTF-8"),然后再返回。
浏览器不死也怪。
调整后,只循环8次。
问题解决,但值得深思。
对新事物,api要常看,对于循环慢的,一定要先看循环的长度。
	//权限树     
		function permissions(){
			// ../../menu/commonMenuList.action
			//../../common/json/test.json
				     $.ajax({
					  url: "../../menu/commonMenuList.action",
					  cache: false,
					  dataType:"json",				  success: function(data){
						  console.info(data.length);
						     for (var i = 0;i < data.length; i++){
													 			var aaa=i+1;//创建伸缩面板,id名字为abc加id号,id号比i下标多一个,是为了以后用ul的id号对应data下标值为整数
											   					$('#tree_top').accordion('add',{
											   						title:data[i].text,
											   						content:'<div style="padding:10px"><ul id="abc'+aaa+'"></ul></div>' 
											   					});
											   					
											   					 //第一次创建的ul是拿不到值的,所以第二次在拿,所以i>0,第二次对应的ul还是创建的第一个,拿第一个数据,
											   					if(i>0){//第一次第一个伸缩面板的id取不到,第二次开始取第一个伸缩面板的id给赋值上第一次的数据 data[i-1]
											   					$("#abc"+i).tree({   
											   						animate:false,
											   						lines:true,
											   						onClick:function(node){
											   						 
											   						}
											   					});  
											   					$("#abc"+i).tree('loadData', data[i-1].children);	
											   					}

											   					
											   					//因为i<data.length,所以"#abc"+i拿不到最后一个,最后一个要用"#abc"+aaa拿,然后得给他创建一个ul才能拿到,
											   					//所以就先增加了一个,在消灭一个,到这里就结束了,break;----->over
											   					if(aaa==data.length){
											   						$('#tree_top').accordion('add',{
											   							title:'gdgd',
											   							content:'<div style="padding:10px"><ul id="dgdg"></ul></div>' 
											   						});
											   						$("#abc"+aaa).tree({   //获得最后一个伸缩面板的id
											   							animate:false,
											   							lines:true,
											   							onClick:function(node){
											   							 
											   							}
											   						});  
											   						$("#abc"+aaa).tree('loadData', data[i].children);//最后一次加载最后一次数据	
											   						
											   						$('#tree_top').accordion('remove',aaa);

											   						return false;
											   					}
											}
					   
					  			}
					});	
			}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics