经典asp:为什么Request.QueryString(“foo”)。toString()在基于javascript(JScript)的页面中工作?

时间:2010-02-18 23:19:53

标签: post asp-classic

我想做的就是

  • 获取提供给Request.QueryString
  • 的名称 - 值对
  • 使用来自值
  • 的名称和值的键填充javascript对象(也称为哈希)
  • 如果其中一个预期哈希值为空字符串
  • ,则暂停页面

Request.QueryString对象提醒我为什么我甚至在它被废弃的技术之前就讨厌经典的asp。 :/

2 个答案:

答案 0 :(得分:2)

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 :(得分:1)

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

但如果必须,您可以随时String( request.querystring("foo") );

事先知道钥匙吗?或者你想迭代对并检索键和值?