JavaScript を使用したクラス ASP - Request.QueryString のクエリ パラメーターが欠落している場合の条件を処理する [重複]
-
12-12-2019 - |
質問
重複の可能性:
URLパラメータが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 分岐は毎回発生し、「未定義さん、こんにちは!" 毎回。
未定義を次のものに置き換えようとしました "" または ヌル, 、しかし何も変わりません。
いろいろ調べてみたのですが、ASP.NET/C# とクライアントサイド JavaScript についての話が出てきました。あなたの助けに感謝!
更新しました:
こんにちは皆さん、ご心配いただきありがとうございます!ただし、JavaScript を利用してサーバー側プログラミングを行う ASP のことを指します。上記のコードを更新しました。
解決
パラメータが渡されたかどうかを確認する最も信頼できる方法は、 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
他のヒント
おそらくこれはあなたにとってうまくいくでしょう:
<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>