Классический asp: почему Request.QueryString ("foo"). ToString () не работает на странице на основе JavaScript (JScript)? - PullRequest
1 голос
/ 19 февраля 2010

Все, что я хочу сделать, это

  • Получить пары имя-значение, которые были переданы в Request.QueryString
  • Заполнить объект javascript (он же хеш) ключами из имени значения из значений
  • Остановить страницу, если одно из ожидаемых значений хеш-функции - пустая строка

Объект Request.QueryString напоминает мне, почему я ненавидел классический asp еще до тогобыла заброшенная технология.: /

Ответы [ 2 ]

2 голосов
/ 16 января 2013

Коллекция Request.QueryString имеет неуклюжий интерфейс, особенно когда речь идет об итерациях или случаях, когда существует несколько параметров с одинаковым именем. Я предлагаю захватить всю строку запроса с помощью Request.QueryString.Item () или Request.ServerVariables ('QUERY_STRING') и проанализировать ее, используя unescape / decodeURIComponent. Это немного усилий, но дает вам больше контроля и последовательности.

Простой пример строчных букв:

var params = parseQueryString(Request.QueryString.Item());

function parseQueryString(qs) {
  var parsed = {}, pairs = qs.split('&');
  for (var i = 0; i < pairs.length; i ++) {
    var pair = pairs[i], pos = pair.indexOf('=');
    if (pos < 0) pos = pair.length;
    parsed[unescape(pair.slice(0, pos)).toLowerCase()] = unescape(pair.slice(pos + 1));
  }
  return parsed;
}
1 голос
/ 19 февраля 2010

Содержимое Querystring по умолчанию считается строкой.

Но если вам нужно, вы всегда можете сделать String( request.querystring("foo") );

Известны ли ключи заранее? или вы хотите перебрать пары и получить ключ и значение?

...