使用JavaScript的ASP类 - 当Request.QueryString中的查询参数丢失时处理条件

时间:2012-05-20 12:56:56

标签: asp-classic jscript

  

可能重复:
  Finding out if a URL param exists in JS-ASP

这可能是非常基础但是,

在下面的代码中,if分支是为了覆盖命中请求错过“name”查询参数的异常情况,如http://foo.com/bar.asp?foo=bar

<%@ language="javascript" %>

<html>
<head>
    <title>Hello ASP!</title>
</head>
<body>
    <%
        if (Request.QueryString("name") == undefined)
        {
            Response.Write("oops, give me your name!");
        }
        else
        {
            Response.Write("Hello " + Request.QueryString("name") + "!");
        }
    %>
</body>
</html>

但从未输入if分支。 else分支每次都会发生,每次都有“ Hello undefined!”。

我试图用“” null 替换undefined,但没有任何变化。

我已经四处寻找,但得到的东西是关于ASP.NET / C#和客户端JavaScript。 感谢您的帮助!

更新:
嗨伙计们,谢谢你的关注! 但我的意思是ASP利用JavaScript来进行服务器端编程。我已经更新了上面的代码。

2 个答案:

答案 0 :(得分:3)

检查参数是否通过的最可靠方法是检查Count属性:

if (Request.QueryString("name").Count === 0) {
    // do whatever...
}

这是有效的,因为如果在URL中多次指定相同的参数,Request.QueryString(var)实际上返回包含多个值的类数组对象(例如,http://example.com/test.asp?name=value1&name=value2)。您可以在MSDN文档中阅读更多内容:

http://msdn.microsoft.com/en-us/library/ms524784%28VS.90%29.aspx

答案 1 :(得分:0)

也许这对你有用:

<script type="text/javascript">
// access the server-side response 
// and store it in a javascript variable
var myQueryString = '<%= Request.QueryString("name") %>';

// now write to the document using javascript only
if (myQueryString === "" ) {
   document.write("oops, give me your name!");
} else {
   document.write("Hello " + myQueryString + "!");
}
</script>