3

重複の可能性:
URLパラメータがJS-ASPに存在するかどうかを確認する

これは非常に基本的なことかもしれませんが、

以下のコードでは、ifブランチは、 http://foo.com/bar.asp?foo=barのようにヒットリクエストが「name」のクエリパラメータを見逃すという異常な状況をカバーするためのものです。

<%@ 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ブランチは毎回発生し、毎回「Helloundefined!」を取得しました。

undefinedを""またはnullに置き換えようとしましたが、何も変わりません。

私は周りを検索しましたが、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 に答える