无法获得其他ASP功能

时间:2014-01-20 15:35:12

标签: if-statement vbscript asp-classic

我遇到了ElseIf声明的问题,希望有人可以帮助我。 :)

这是我们目前的代码:

<%
Response.Buffer = True
If Request.QueryString("MapLocation") = "" Then
    Response.Redirect "Page_Not_Found.html"
ElseIf Request.QueryString("StaffName") = "Shaun MaWhinney" Then
    Response.Redirect "Leavers.html"
Else
    strMapLocation = Request.QueryString("MapLocation")
    strStaffName = Request.QueryString("StaffName")
End If
%>

我在ElseIf语句中添加了希望它可以工作,但不幸的是它完全跳过它并执行Else代码。 StaffName绝对等于“Shaun MaWhinney”,所以我迷失了为什么它没有打开leavers.html文件。有任何想法吗?感谢您阅读此邮件的时间。

3 个答案:

答案 0 :(得分:0)

您可以使用这个简单的脚本

Option Explicit

Dim aCond : aCond = Array(False, True) ' <-- your experiments here

WScript.Echo Join(aCond)
If aCond(0) Then
   WScript.Echo 1
ElseIf aCond(1) Then
   WScript.Echo 2
Else
   WScript.Echo 3
End If

输出:

cscript 21237966.vbs
False True
2

说服自己,ElseIf分支将在

时执行
  1. Request.QueryString("MapLocation") = ""为假
  2. Request.QueryString("StaffName") = "Shaun MaWhinney"为True
  3. 并且到达Else分支的唯一方法是从aCond = Array(False, False)开始。因此,仔细检查Shaun的姓氏是否是“MaWhinney”(或“MacWhinney”或“McWhinney”)。

答案 1 :(得分:0)

您是否100%确定该名称的正确/大写与您测试的方式相同(即:&#34; Shaun Mawhinney&#34;将与#34; Shaun MaWhinney&#34;等等不同)。如果您不确定,可以转换并以小写/大写形式测试字符串。

如果您只是在Shaun MaWhinney的Leavers.html为空时尝试重定向到MapLocation,那么您可以这样做:

<%
Response.Buffer = True
If Request.QueryString("MapLocation") = "" Then
    If lcase(Request.QueryString("StaffName")) = "shaun mawhinney" Then
        Response.Redirect "Leavers.html"
    else
       Response.Redirect "Page_Not_Found.html"
    End If
Else
    strMapLocation = Request.QueryString("MapLocation")
    strStaffName = Request.QueryString("StaffName")
End If
%>

答案 2 :(得分:0)

您可以尝试两件简单的事情 - 首先,将此作为您的其他if子句

ElseIf Server.Urlencode(Request.QueryString("StaffName")) = "Shaun+MaWhinney" Then
Response.Redirect "Leavers.html"

第二

  1. 删除您的ElseIf条款

  2. 结束后如果添加以下行

  3. 如果strStaffName =“Shaun MaWhinney”,那么Response.Redirect“Leavers.html”结束如果

    显然,你也可以尝试使用方法2的Server.Urlencode