2013-06-06 1 views
1

Я использую asp (JScript как мой язык) и работаю с получением данных из формы, которая отправляется с помощью POST.Что делает пустое значение ввода при использовании POST в asp?

В частности, у меня есть ввод текста, и я хочу проверить, осталось ли оно пустым. Когда он оставлен пустым и включает в себя Response.Write(Request.form('opt2Dur')) на вызываемой странице, ничего не печатается (не печатает значение null или undefined).

Я думал, что это была пустая строка, поэтому я включил это: Response.Write(Request.form('opt2Dur') === ''), однако это напечатано false.

Он напечатает true, если я использую Response.Write(Request.form('opt2Dur') == '') (== not ===). Какова истинная ценность, которую я могу проверить против использования ===? Или, в этом случае достаточно будет проверить только ==?

Спасибо за любую помощь.

+0

Просьба пояснить, что вы используете Classic ASP 3.0 с JScript в качестве своего языка? Если это так, удалите тег 'asp.net' и замените его на' classic asp'. – Dai

+0

Если честно, я не совсем уверен. Мне был предоставлен некоторый код от другого разработчика и он попросил его повторить/улучшить. Если вы предположили бы, что это классика, я изменю тег. –

+0

Если вы используете классический ASP (не .NET), то вам не нужно проверять значение формы с помощью оператора '===', просто используйте '=='. – VMV

ответ

1

В языках сценариев с «гибкими» типами и значениями по умолчанию очень легко путать с реальными типами данных.

Фактический тип каждого элемента запроса (как QueryString, так и Form, это не имеет значения) - это своего рода массив, так как он также поддерживает более одного элемента формы с тем же именем, который передается обработчику ASP. Также упоминается в documentation:

Сбор формы индексируется по именам параметров в теле запроса. Значение Request.Form (element) представляет собой массив всех значений элемента, которые встречаются в элементе запроса.

Поскольку === также учитывает тип, он вернет false в вашем случае, поскольку массив не является строкой.

Я не смог найти точный фактический тип и воспроизвести его с локальной переменной (это не любой обычный массив), так что если вы заинтересованы в использовании строгого оператора сравнения, проверить граф:

Response.Write(Request.Form('opt2Dur').Count === 0); 

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

  • Нет связанных вопросов^_^