2012-02-28 2 views
0

Я пытаюсь разобрать запрос POST, который включает символы «\ n» и «\ t», но как только я использую Request.Form для управления данными, эти символы больше нет. Я использовал Wireshark, чтобы подтвердить, что персонажи находятся в POST.ASP Метод запроса, не показывающий скрытые строки и символы табуляции

Может ли кто-нибудь помочь?

Вот код, который воспроизводит проблему:

POST:

str = "accountRequest=<NewUser>" & vbLf & _ 
"Hello" & vbTab & "World" & vbLf & _ 
"</NewUser>" 


Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0") 
objHTTP.open "POST", "service.asp", False 
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
objHTTP.send str 

response.Write(objHTTP.responseText) 

Set objHTTP = Nothing 

service.asp:

function w (str) 
response.Write(str & "<br>") 
end function 

str = request.Form("accountRequest") 

w(str) 
w("Tabs: "& InStr(str,vbTab)) 
w("Lines: "& InStr(str,vbLf)) 

выход:

HelloWorld 
Tabs: 0 
Lines: 0 
+0

От «no longer there» вы смотрите на них на странице HTML? Они не HTML, вы их не увидите. –

+0

Они являются разделителями данных. Мне нужно использовать их для разделения содержимого POST на массив и вставки в базу данных. – greener

+0

Выходят ли они из текстового поля? Они все равно должны быть там. –

ответ

1

Наконец-то выяснилось, что классический метод ASP Request.Form не сохраняет вкладки, если они находятся в формате «\ t» (в отличие от URL-адреса). Тем не менее, PHP $_POST делает и делает метод запроса ASP.NET.

0

Если все, что вы» re пытается сделать, это про выделите разделитель на данные, передаваемые через querystring, тогда я попытаюсь использовать символ, который более конкретный, чем вкладки и новые строки.

| исторически был использован много для таких ситуаций Я верю, что taht # - это еще одно значение, которое делает это через цепочку без особых проблем.

Мне лично не нравится полагаться на возможность выбора Tab и NewLine из строкового значения. Слишком склонны к заблуждению в определенных ситуациях, когда их передают здесь и там.

Просто сделайте это перед отправкой:

str = str.replace(VbTab,"#") 
str = str.replace(VbLf,"|") 

... а затем обратное один раз на целевой странице, и он должен работать нормально.

+1

Я не тот, кто его отправил. Код, приведенный выше, является всего лишь способом репликации условий, в которых я работаю. Мне говорят люди, которые отправляют данные о том, что их метод отлично работает со многими другими людьми. – greener

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