代码之家  ›  专栏  ›  技术社区  ›  dreftymac

经典ASP:为什么不在基于JavaScript(JScript)的页面中请求.queryString(“foo”).toString()?

  •  1
  • dreftymac  · 技术社区  · 15 年前

    我只想做

    • 获取为request.querystring提供的名称-值对
    • 用名称中的键和值中的键填充javascript对象(也称为哈希)
    • 如果预期的哈希值之一是空字符串,则停止页面

    request.querystring对象提醒我为什么我讨厌经典的ASP,甚至在它被废弃之前。:

    2 回复  |  直到 12 年前
        1
  •  1
  •   Gabriele Petrioli    15 年前

    我相信,默认情况下,querystring内容被视为字符串。

    但是如果你必须这样做,你可以一直这样做 String( request.querystring("foo") );

    钥匙在手之前就知道了吗?或者您想遍历这些对并检索键和值?

        2
  •  2
  •   sstur    12 年前

    request.querystring集合有一个笨拙的接口,特别是在迭代或有多个同名参数的情况下。我建议使用request.query string.item()或request.servervariables(“query_string”)获取整个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;
    }