换句话说,用asp生成一个数组变量发送到客户端,让js直接调用。
现在我用的方法是用一个for循环,在服务器端把生成的数组一个一个读出来做成js的赋值语句,
如<% for i=0 to 10000 %> x[<%=i%>]="XXX" <% next%>
这样虽然js用到了数组的值,但查看源文件发现里面竟然有一万多个js的赋值语句,如x[0]="XXX";
x[1]="XXX";x[2]="XXX";x[3]="XXX";...........这无形中增大了页面的大小,严重影响了页面打开
的速度,量少还可以,量大的话就不行了,问一下谁有没有好的方法请教一下?
现在我用的方法是用一个for循环,在服务器端把生成的数组一个一个读出来做成js的赋值语句,
如<% for i=0 to 10000 %> x[<%=i%>]="XXX" <% next%>
这样虽然js用到了数组的值,但查看源文件发现里面竟然有一万多个js的赋值语句,如x[0]="XXX";
x[1]="XXX";x[2]="XXX";x[3]="XXX";...........这无形中增大了页面的大小,严重影响了页面打开
的速度,量少还可以,量大的话就不行了,问一下谁有没有好的方法请教一下?
dim arr
arr=Array(1,2,3,4,5)
%>
<script>
var a=<%=arr%>
if(a){
alert(a.length)
//do something here...
}</script>
dim arr,s
arr=Array(1,2,3,4,5)
s= join(arr,",")
%>
<SCRIPT LANGUAGE=javascript>
var str='<%=s%>',arr=str.split(",")
alert(arr.length)
//do something here...
</SCRIPT>
dim id1()
for x=0 to ray1-1
id1(x)=recordset1("id")
recordset1.movenext
next
为什么它要说我" id1(x)=recordset1("id") "这一句“下标越界”啊?
<%
dim id1(),s
redim id1(ray1-1)'这里是关键
for x=0 to ray1-1
id1(x)=recordset1("id")
recordset1.movenext
next s= join(id1,",")
%>
<SCRIPT LANGUAGE=javascript>
var str='<%=s%>',arr=str.split(",")
alert(arr.length)
//do something here...
</SCRIPT>
OK 完全可行
<% dim id1(),id2
dim class1(),class2
dim dx1(),dx2
dim dy1(),dy2
dim nx1(),nx2
dim ny1(),ny2
dim ntexts1(),ntexts2
dim ntextd1(),ntextd2
redim id1(ray1-1)
redim class1(ray1-1)
redim dx1(ray1-1)
redim dy1(ray1-1)
redim nx1(ray1-1)
redim ny1(ray1-1)
redim ntexts1(ray1-1)
redim ntextd1(ray1-1)
for x=0 to ray1-1
id1(x)=recordset1("id")
class1(x)=recordset1("rank")
dx1(x)=recordset1("xaxis")
dy1(x)=recordset1("yaxis")
nx1(x)=recordset1("xsla")
ny1(x)=recordset1("ysla")
ntexts1(x)=recordset1("sname")
ntextd1(x)=recordset1("dname")
recordset1.movenext
next
id2=join(id1,"┇")
class2=join(class1,"┇")
dx2=join(dx1,"┇")
dy2=join(dy1,"┇")
nx2=join(nx1,"┇")
ny2=join(ny1,"┇")
ntexts2=join(ntexts1,"┇")
ntextd2=join(ntextd1,"┇")
id2=join(id1,"┇")
%>
var strid1='<%=id2%>' , id1=strid1.split("┇")
var strclass1='<%=class2%>' ,class1=strclass1.split("┇")
var strdx1='<%=dx2%>' ,dx1=strdx1.split("┇")
var strdy1='<%=dy2%>' ,dy1=strdy1.split("┇")
var strnx1='<%=nx2%>' ,nx1=strnx1.split("┇")
var strny1='<%=ny2%>' ,ny1=strny1.split("┇")
var strntexts1='<%=ntexts2%>' ,ntexts1=strntexts1.split("┇")
var strntextd1='<%=ntextd2%>' ,ntextd1=strntextd1.split("┇")
看了源代码才发现,其实和我原来设计的方法也差不多,我的直接写值进去的
var strid1=‘<% for i=0 to ray1-1%><%=recordset1("id")%>┇<% recordset1.movenext
next %>’
结果都是
var strid1='126┇125┇124┇123┇122┇121┇120┇118┇117┇116┇115┇114┇113┇112┇111┇110┇109┇108┇107┇106┇105┇104┇103┇102┇101┇100┇99┇98┇97┇96┇95┇94┇93┇92┇91┇90┇89┇88┇87┇86┇85┇84┇83┇82'