来自 Request.Form 的经典数组 asp

Array from Request.Form in classic asp

编辑:在那些回答我的问题的人的帮助下,我现在意识到我的问题是关于 Request.Form 数据是否是一个字符串,就像 a$="FooBar" 是一个字符串和经典中的 Array 命令 ASP.

我正在尝试根据表单中提交的数据创建一个数组。

表单字段是动态创建的并且具有相同的名称"subj"。

Response.Write(Request.Form("subj")) 产生:

"Welcome and Introduction, Talk1, Talk2 ,Interactive review of the conference"

当我检查 TypeNameVarType 时 Request.Form("subj") 是一个字符串。然后我编码:

subjs = """" & Replace(Request.Form("subj"), ", ", """,""") & """"
subjects = Array(subjs)

有意赠送:

subjs = "Welcome and Introduction","Talk1","Talk2","Interactive review of the conference"

subjects(0) = Welcome and Introduction

subject(1) = Talk1

subject(2) = Talk2

subject(3) = Interactive review of the conference

问题是我实际得到的是:

subjs = "Welcome and Introduction","Talk1","Talk2","Interactive review of the conference"

subject(0) = "Welcome and Introduction","Talk1","Talk2","Interactive review of the conference"

由于某种原因,数组的格式不正确,因为没有主题 (1) 主题 (2) 或主题 (3)。

如果我将 subjs 的输出物理复制并粘贴到我的代码中,则 Array 可以正常工作,但我无法让 Array 处理表单数据。

我试过使用 CStr 并检查了所有引号。

为什么不起作用?

感谢不厌其烦回复的各位。虽然 Split 确实在没有逗号的字段中工作,但根据 @Kul-Tigin SET var = Request.Form("subj"),我认为这是关键,但很想听听其他想法

Array 函数需要一个逗号分隔的列表:"words","stuff","foo",但是您从 Request.Form 得到的更像是 "words,stuff,foo".

不过,最终这并不重要,因为正如您在评论中指出的那样,要使用的适当函数是 Split.

由于请求集合值可能包含逗号,使用拆分可能会导致意外结果。

通过集合创建数组更靠谱

Set subject = Request.Form("subj")

ReDim subjects(subject.Count - 1)

For i = 1 To subject.Count
    subjects(i - 1) = subject(i)
Next