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