2016-11-18 3 views
1

EDIT: Теперь я понимаю после помощи тех, кто ответил, что мой вопрос заключается в том, является ли Request.Form Data строкой так же, как a$="FooBar" является строкой и командой Array в классическом ASP.Array from Request.Form в классическом asp

Я пытаюсь создать массив из данных, представленных в форме.

Поля формы динамически создаются и имеют одно и то же имя «subj».

Response.Write(Request.Form("subj")) производит:

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

Когда я проверяю TypeName или VarType 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 в свой код, то массив работает отлично, но я не могу заставить массив работать с данными формы.

Я пробовал использовать CStr и проверял все кавычки.

Почему это не работает?

Спасибо тем, кто взял на себя труд ответить. В то время как Split работает в полях без запятых, SET var = Request.Form("subj") согласно @ Кул-Тегин, я думаю, что это ключ, но было бы хотим услышать другие мысли

+2

Split, кажется, работает - [String в массив с классическим ASP] (http://stackoverflow.com/questions/27954415/string-to-array-with-classic-asp?rq=1) 'code subject = Split (Request.Form (" subj "),", ")' –

+0

Это потому, что Тони, это целая цель функции Split(). Он берет строку с разделителями и разбивает ее на элементы массива на основе общего разделителя, который вы можете указать, в отличие от 'Array()', который создает массив из списка аргументов. – Lankymart

ответ

1

Поскольку значения коллекции запроса могут содержать запятые, использование split может привести к неосмотрительным результатам.

Создание массива через коллекцию является более надежным.

Set subject = Request.Form("subj") 

ReDim subjects(subject.Count - 1) 

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

Правда, но если вы намерены отправить список с разделителями с целью создания массива, то вы наверняка подумали об этом заранее, а 'Split()' должно быть достаточно. – Lankymart

+0

@ Lankymart какое намерение? Я отвечал «Я пытаюсь сделать массив из данных, представленных в форме», в дополнение к @ Martha's. –

+0

Извините, это опечатка, предназначенная для того, чтобы говорить * «Правда, но если ** ** намерение» *. Он не был нацелен на вас. Я имел в виду намерение OP было отправить массив, поэтому 'Split()' должно быть достаточно. – Lankymart

0

Array функции ожидает список разделенных запятых: "words","stuff","foo", но что вы получить от Request.Form больше похож на "words,stuff,foo".

В конечном счете, это не имеет значения, поскольку, как вы отметили в своем комментарии, подходящей функцией является Split.

+0

Спасибо за подтверждение 'split' - правильный способ справиться с этим.Я подумал, что я правильно преобразовал текст с помощью «Заменить (Request.Form (« subj »),«, »,« »,«, »), но он, похоже, не работает. –

+0

OP уже подтвердил за несколько часов до того, как вы даже ответили, что вопрос является дубликатом, просто отметьте его и перейдите. Любой, кто думает о вопросе «Разделение в массив», не является дубликатом, теперь нужно перечитать [Почему некоторые вопросы отмечены как дубликаты?] (Http://stackoverflow.com/help/duplicates). – Lankymart

+0

Спасибо, Марта. У меня было несколько проблем с запятыми в тексте поля и перешел к предложению @ Кул-Тигина –

Смежные вопросы