在经典ASP中创建数组,在javascript中访问数组

在经典ASP中创建数组,在javascript中访问数组,javascript,arrays,asp-classic,Javascript,Arrays,Asp Classic,我有一个ASP经典网页,它将目录中的文件内容加载到服务器端数组中供以后使用。然后我用javascript解析这个数组来完成我需要的工作。但是,我的javascript无法找到数组。在javascript中访问我的数组需要做什么 在ASP中,我读取目录,对于目录中的每个文件,我添加一个,并在服务器端数组中添加一个条目: Response.Write "<select name='cmbTemplate' id='cmbTemplate' onChange='templateI

我有一个ASP经典网页,它将目录中的文件内容加载到服务器端数组中供以后使用。然后我用javascript解析这个数组来完成我需要的工作。但是,我的javascript无法找到数组。在javascript中访问我的数组需要做什么

在ASP中,我读取目录,对于目录中的每个文件,我添加一个
,并在服务器端数组中添加一个条目:

        Response.Write "<select name='cmbTemplate' id='cmbTemplate' onChange='templateIt();'>"
        Response.Write "<option value=''>[No Template]</option>"

        DIM fs,fo,fi,dot,ext,name,ix,ts
        CONST ForReading = 1

        Set fs=Server.CreateObject("Scripting.FileSystemObject")

        Redim vbTemplateArray(0)
        ix=-1
        If fs.FolderExists(strDirectory) Then
            Set fo=fs.GetFolder(strDirectory)
            for each fi in fo.files
                ix=ix+1
                Response.Write("<option value='"&ix&"'>"&name&"</option>")
                Set ts = fs.OpenTextFile(strDirectory&fi.Name, ForReading)
                Redim Preserve vbTemplateArray(ix)
                While not ts.AtEndOfStream
                    vbTemplateArray(ix) = vbTemplateArray(ix) + ts.ReadLine
                Wend
                ts.Close
            next
        End If
        Response.Write "</select>"
    End If
响应。写入“”
响应。写“[无模板]”
尺寸fs、fo、fi、dot、ext、name、ix、ts
常数ForReading=1
设置fs=Server.CreateObject(“Scripting.FileSystemObject”)
Redim vbTemplateArray(0)
ix=-1
如果fs.FolderExists(strDirectory)那么
Set fo=fs.GetFolder(strDirectory)
对于fo.file中的每个fi
ix=ix+1
响应。写入(“&name&”)
设置ts=fs.OpenTextFile(strDirectory&fi.Name,ForReading)
Redim保留vbTemplateArray(ix)
而不是ts.AtEndOfStream
vbTemplateArray(ix)=vbTemplateArray(ix)+ts.ReadLine
温德
关闭
下一个
如果结束
响应。写入“”
如果结束
我看到它读到,在我的javascript块中,我可以使用一个名为VBArray的javascript例程来执行转换,但它似乎没有找到我要转换的数组:

function templateIt() {
    var jsTemplateArray = VBArray(<%=vbTemplateArray%>).toArray();
    ...
}
函数templateIt(){
var jsTemplateArray=VBArray().toArray();
...
}
我得到错误:
VBArray:参数不是VBArray对象


建议?

记住,
语法是
的简写。您不能
响应。一次写入整个数组;您必须遍历它的元素。(事实上,我很惊讶当服务器试图呈现页面时,您没有收到类型不匹配错误。)这是因为找不到vtTemplateArray,并且该行呈现为
var jsTemplateArray=VBArray().toArray()
我仍然想知道是否有办法解决这个问题,但我已经重新编写了相关代码,将数组创建为javascript数组(而不是创建为vbScript数组,然后进行转换),有效地避免了这个问题。