分类数据动态生成Javascript数组
Wednesday, 7. June 2006, 02:21:01
参照文章关于无限分级的一种算法思路中,我们取得了无限分级的数据,在某些时候需要频繁的调用该数据,并且分级类别(菜单项)多的时候,如果用Asp实现,则会增加服务器负担。一种解决的方式是把数据库中的数据生成一个Javascript数组,然后用Javascript数组来替代调用它;当然,你也可以把Javascript数组数据生成为一个Js文件,方便其他相关文件调用。
代码如下:
在欲调用Javascript数组的代码前加入如下代码:
如何调用(调用方式):
说明:
1.由于该调用是在select标签中实现的,基于你自己的调用方式,你可以修改PrintClassToJs函数和Pz_WriteClass函数中的相关代码,以实现自己的调用方式。
2.关于把该数组生成Js文件的功能,用Fso就可以实现,这里就不写了。
代码如下:
'*************************************
'Coded By hooline 2006.6.7
'Email:hooline#gmail.com
'Msn:peace.zhou#msn.com
'功能:生成Javascript数组
'**************************************
function PrintClassToJs(ParentId,ChildId)
dim objRs,strSql,i
dim strSpace
set objRs=server.CreateObject("adodb.recordset")
strSql="Select * from tClass where ParentId="&ParentId&""
objRs.Open strSql,objConn,3,1
if not objRs.EOF then
strSpace=""
while not objRs.EOF
for i=1 to ChildId-1
strSpace=strSpace+"--"
next
response.write "strClass["&j&"]=new Array();"&Vbcrlf
response.write "strClass["&j&"][0]='"&objRs("id")&","&objRs("ChildId")+1&"';"&Vbcrlf
response.write "strClass["&j&"][1]='"&strSpace&objRs("ClassName")&"';"&Vbcrlf
j=j+1
PrintClassToJs objRs("id"),ChildId+1
objRs.MoveNext
strSpace=""
wend
end if
objRs.Close
set objRs=nothing
end function
在欲调用Javascript数组的代码前加入如下代码:
<script type="text/javascript">
/*-------------------------------
把分级数据从数据库中放到Javascript数组中
Code By hooline 2006.6.7
Email:hooline#gmail.com
Msn:peace.zhou#msn.com
---------------------------------*/
var strClass=new Array();
<%public j:j=0:PrintClassToJs 0,1%>
function Pz_WriteClass(){
for (var i=0;i<strClass.length;i++){
document.write ("<option value="+strClass[i][0]+">"+strClass[i][1]+"<\/option>");
}
}
</script>
如何调用(调用方式):
<select name="ClassList" id="ClassList"> <option value="0,1">顶级分类</option> <script type="text/javascript">Pz_WriteClass();</script> </select>
说明:
1.由于该调用是在select标签中实现的,基于你自己的调用方式,你可以修改PrintClassToJs函数和Pz_WriteClass函数中的相关代码,以实现自己的调用方式。
2.关于把该数组生成Js文件的功能,用Fso就可以实现,这里就不写了。







