在传统ASP中将VBScript数组转换为Java Script Array

时间:2017-07-12 20:05:50

标签: javascript arrays loops vbscript asp-classic

我有一个用VB脚本编写的经典ASP页面,并且有一个脚本标记,其中使用了Java脚本。

我正在尝试使用for循环将VB脚本数组(codeList)转换为Java脚本数组(availableCode),但是VB脚本数组的第一行继续在Java脚本数组的每一行中进行转换。

$(document).ready( function(){
var availableCode = new Array();

for (idx=0; idx < 3; idx++) 
{ 
    availableCode[idx]=<%=codeList(idx)%>;
    alert (idx);
    alert (<%=codeList(idx)%>);
    alert (availableCode[idx]);
}
});

我也尝试了以下内容,但是语法错误。

availableCode[idx]=<%=codeList(%> idx <%)%>;

有人可以建议如何投射预期值吗?谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你需要反过来做,即在VBScript中创建索引(idx),然后将其写入Javascript:

$(document).ready( function(){
    var availableCode = new Array();
<%
    dim idx
    for idx = 0 to UBound(codeList)
%>  
    availableCode[<%=idx %>] = <%= codeList(idx) %>;
    alert (<%= idx %>);
    alert (<%= codeList(idx) %>);
    alert (availableCode[<%= idx %>]);
<% next %>
});

如果codeList的元素是字符串值,则需要引用以防止javascript错误

$(document).ready( function(){
    var availableCode = new Array();
<%
    dim idx
    for idx = 0 to UBound(codeList)
%>  
    availableCode[<%=idx %>] = '<%= codeList(idx) %>'; // quote here
    alert (<%=idx %>);
    alert ('<%= codeList(idx) %>'); // quote here
    alert (availableCode[<%= idx %>]);
<% next %>
});

您认为我遇到的问题是服务器端(VBScript)上不存在idx,因此在此语句<%= codeList(idx) %>中使用时,idx被隐式转换为0.因此总是返回值在codeList(0)

答案 1 :(得分:1)

您可以使用Join()输出您的数组:这也将使您的客户端代码更紧凑。

$(document).ready( function(){
    var availableCode = ['<%=Join(codeList, "','")%>'];