换句话说,用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";...........这无形中增大了页面的大小,严重影响了页面打开
的速度,量少还可以,量大的话就不行了,问一下谁有没有好的方法请教一下?

解决方案 »

  1.   

    <%
    dim arr
    arr=Array(1,2,3,4,5)
    %>
    <script>
      var a=<%=arr%>
      if(a){
        alert(a.length)
        //do something here...
      }</script>
      

  2.   

    2楼错误,作废。看这个:<%
    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>
      

  3.   

    你的arr=Array(1,2,3,4,5)是给定的,我的是从数据库读出来的怎么搞?
    dim id1()
     for  x=0   to   ray1-1   
          id1(x)=recordset1("id")
    recordset1.movenext   
     next 
    为什么它要说我" id1(x)=recordset1("id") "这一句“下标越界”啊?
     
      

  4.   

    你真是的,举一反三呗,呵呵。
    <%
    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>
      

  5.   


    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'