Request.Form иногда возвращает значение флажка, в других случаях нет - PullRequest
3 голосов
/ 12 января 2009

Кто-нибудь знает, что с этим не так? У меня есть некоторый классический ASP-код, который проверяет значение флажка, например:

<!-- HTML page: page1.asp --->
<input id="useBilling" name="useBilling" value="Y" type="checkbox" />

И в моей кодовой странице (назовем это page2.asp):

' code

useBilling = Request.Form("useBilling")

' useBilling should be "Y" here

If useBilling = "Y" Then
    ' using billing info
Else
    ' not using billing info
End If

Проблема в том, что иногда, даже когда я проверяю флажок, он передает пустую строку в Request.Form и выполняется неправильный код. Я поместил несколько вызовов Response.Write, чтобы отследить его (это VBScript, помните), и иногда он говорит, что значение равно «Y», но позже, когда я проверяю значение в условном выражении, оно пустое.

Я ломал голову, пытаясь понять, почему, черт возьми, это не работает, потому что все кажется правильным, просто Request.Form иногда выбирает значение, а иногда нет, даже когда проверяется. Черт, иногда я проверяю его, комментируя код выполнения, и он говорит, что значение равно «Y», затем, когда я раскомментирую исполняемый код, он снова загадочным образом опустошается.

РЕДАКТИРОВАТЬ: Как ни странно, если я включу тег Response.End в условное, он будет работать так, как я ожидаю, но когда я удаляю Response.End он больше не находит значение флажка (возвращает пусто), хотя минуту назад (с откликом на Response.End) выводится тестовое сообщение «Хорошо, флажок установлен». В комментариях Response.End говорится: «Флажок не установлен».

Я даже пытаюсь вывести значение флажка (который должен быть "Y", если он отмечен, и ничего, если это не так). И, конечно же, если в условие входит Response.End, он выведет «Y», а если я удалю Response.End, он будет пустым.

Ответы [ 2 ]

3 голосов
/ 13 января 2009

Бьёт мой мозг, пытаясь выяснить, какого черта это не так работает, потому что все кажется быть правым, просто Request.Form иногда подбирает значение и иногда нет, даже если это проверено.

Не прямой ответ, но просто для полной ясности: Request.Form ("useBilling") будет всегда возвращать пустое значение, если флажок не установлен. Из вашей формулировки «даже когда я проверяю флажок» я не был уверен, ожидали ли вы там значения, когда оно не было проверено. Из вашего кода, я думаю, вы поняли.

Что касается проблемы, я никогда не видел, чтобы это случилось раньше, несмотря на использование ASP в течение 10 с лишним лет (пожалуйста, убейте меня). Это не значит, что вы галлюцинируете, просто я этого не видел. Интересно!

Интересно, может быть, ваш HTML (в частности, тег формы) может быть искажен? У вас есть перекрывающиеся теги или отсутствующий закрывающий тег или что-то еще?

Мне также было бы крайне любопытно увидеть выходные данные Request.Form, когда что-то не так, например:

If useBilling = "Y" Then
  Response.Write "Cool, it works!"
Else
  Response.Write "Something's weird. " & Request.Form
End If
0 голосов
/ 13 января 2009

Это должно быть правильно, если вы отправляете форму и флажок снят, ее значение должно быть значением пустой строки - если флажок установлен, он должен иметь значение "on"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...