3

可能重复:
找出 JS-ASP 中是否存在 URL 参数

这可能是非常基本的,但是,

在下面的代码中,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 进行服务器端编程。我已经更新了上面的代码。

4

2 回答 2

3

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

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

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

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

于 2012-05-20T18:11:40.957 回答
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>
于 2012-05-20T14:04:26.010 回答