javascript - 如何转换经典 .ASP VB 多维数组(来自记录集)以便在 javascript .js 文件中使用?

标签 javascript multidimensional-array vbscript asp-classic

VB 多维数组 (arrHotelsProdCols) 是在经典 .ASP vb 中创建的:

strSQLHotelsProdCols = "SELECT * FROM qryHotelProdCols"
rsHotelsProdCols.Open strSQLHotelsProdCols, ConString
arrHotelsProdCols = rsHotelsProdCols.GetRows

VB 数组工作正常,超过 600 行,4 列。我可以循环遍历它并将其显示在源 .asp 文件 html 等的表格中。

我想向现有的 validateform.js“包含”文件添加一个函数,该函数将在与 VB 多维数组相同的 .asp 文件中触发现有表单中一个下拉列表的 onchange,搜索唯一值并填充其他值表单中的字段与多维数组中同一行中的其他值 - 这部分对我来说并不是那么困难,如果我到达那里时遇到困难,那就是另一个问题了。

1) 如何将 VB 多维数组转换并传递为 JavaScript 数组以在 validateform.js 文件中使用?

最佳答案

说明

事实上,正如您的问题所述,VB 数组可以是多维的。 但是JScript 数组不能是多维的:它们只是一维。 (参见。https://wiki.mcneel.com/developer/scriptsamples/arrays)

解决方案

因此,解决方案是列出 JScript 一维数组的所有元素,并尝试检测何时到达新的“行”。我们怎么知道这一点?我们可以简单地知道,当RowNumber Modulus NumberOfColumns为零时,那么它实际上是一个新行。 这可能看起来有点“hacky”,但即使在生产环境中,它也是 100% 功能齐全的:-) 以下是 VBScript 部分和 JScript 部分的源代码:

VBScript 部分

<%
'Declare SQL Statement
Dim strSQLHotelsProdCols
strSQLHotelsProdCols = "SELECT * FROM qryHotelProdCols"

'Execute SQL Statement
rsHotelsProdCols.Open strSQLHotelsProdCols, ConString

'Populate Two-Dimensional VB Array
arrHotelsProdCols = rsHotelsProdCols.GetRows
%>

JScript 部分

<script runat="server" language="JavaScript">

    //Convert a VBScript Two-Dimensional array => To => JScript One-Dimensional array
    //Yes : Infortunately, JScript can only manage 1-Dimension Arrays !
    var tmp_VBArray = new VBArray(arrHotelsProdCols);
    var tmp_VBArrayInJs = (tmp_VBArray).toArray();

    //As all the "VB columns" (2-dimension array) have been converted into "JS rows" (1-dimension array),
    //We will manually detect when a new Row has started using the modulus (%) operator :-)

    //For each row in the One-Dimension JScript array
    for (var iRow = 0; iRow < tmp_VBArrayInJs.length; iRow++) {

        //Test if a new row has started
        var testNewRow = (iRow + 1) % (tmp_VBArray.ubound(1) + 1);

        //If a new row is detected
        if (testNewRow == true){
            response.write('<br>=> NEW ROW STARTED<br>');
        }

        //Write the fields
        response.write('<strong>'+iRow+'. </strong>');
        response.write(tmp_VBArrayInJs[iRow] + '<br>');
    }
</script>

关于javascript - 如何转换经典 .ASP VB 多维数组(来自记录集)以便在 javascript .js 文件中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31014145/

相关文章:

vb.net - 等待多个Backgroundworkers完成

excel - 将 VBS 脚本转换为 Excel VBA

vbscript - 如何暂停 vbscript 执行?

javascript - 在 ejs 和 nodejs 中 POST http ://localhost:3000/socket. io/?EIO=3&transport=polling&t=NQUneY3 400(错误请求)

javascript - 使用DiscordJS的Music Discord机器人无法正常工作

javascript - 如何让所有带有类的文本框在 jquery 中有一个日期选择器?

java - 在二维排序数组中搜索元素

javascript - 使用 jQuery 在垂直多级弹出菜单中出现问题

javascript - 将多维输入数组转换为 JSON

perl - 有没有办法轻松获取 3 个文本文件并通过脚本将其转换为多选项卡 excel 表?