Выяснение, существует ли параметр URL в JS-ASP - PullRequest
1 голос
/ 11 октября 2010

Я редактирую чужой код, написанный на серверном JS для ASP, и столкнулся с проблемой, которая, вероятно, имеет очень простое решение.

Я выводю некоторый код из URL-параметра следующим образом:

<%=Request.QueryString("param")%>

Проблема в том, что если param не существует, мне нужно сделать что-то еще. Итак, я попробовал:

<% 
  var param = Request.QueryString("param");
  if (!param) { param = "Some Default Value"; }
%>
<%=param%>

Проблема в том, что if никогда не оценивается в true, даже если параметр URL отсутствует. Я предполагаю, что условие !image здесь не работает. Каким должно быть мое тестовое состояние?

(Пожалуйста, воздержитесь от строгих предупреждений о экранировании параметров URL для предотвращения XSS.)

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Правильный способ проверить, существует ли параметр строки запроса, это свойство Count:

<% 
  var param = Request.QueryString("param");
  if (param.Count === 0) { param = "Some Default Value"; }
%>
<%=param%>

В соответствии с документацией для Request.QueryString,

Значение Request.QueryString ( параметр ) является массивом всех значений параметра, которые встречаются в QUERY_STRING.

Возможно, поэтому простой if (!param) проверка не работает.

2 голосов
/ 26 марта 2012

Это то, что я делаю.

function qs(name) {
    var v = Request.QueryString(name),
        v2 = "x" + v + "x";
    if ((v2=="xundefinedx") && (v != "undefined")) {
        return null;
    }
    return v + ''; // force string
}
0 голосов
/ 11 октября 2010

В JSP вы должны использовать getParameter вместо QueryString

Код в JSP будет

<% 
  String param = request.getParameter("param");
  if (param.length() == 0) { param = "Some Default Value"; }
%>
...