If statement 无法使elseif ASP正常工作

If statement 无法使elseif ASP正常工作,if-statement,vbscript,asp-classic,If Statement,Vbscript,Asp Classic,我遇到了一个其他声明的问题,希望有人能帮助我 这是我们目前拥有的代码: <% Response.Buffer = True If Request.QueryString("MapLocation") = "" Then Response.Redirect "Page_Not_Found.html" ElseIf Request.QueryString("StaffName") = "Shaun MaWhinney" Then Response.Redirect "Leave

我遇到了一个其他声明的问题,希望有人能帮助我

这是我们目前拥有的代码:

<%
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文件。有什么想法吗?非常感谢您花时间阅读此邮件。

您可以使用此简单脚本

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
为了说服自己,ElseIf分支将在

Request.QueryStringMapLocation=为False Request.QueryStringStaffName=Shaun MaWhinney为True
到达Else分支的唯一方法是从aCond=ArrayFalse开始,False。因此,请仔细检查Shaun的姓是MaWhinney还是MacWhinney或McWhinney。

您是否100%确定该名称正确/大写与您正在测试的相同,即:Shaun MaWhinney将与Shaun MaWhinney不同,等等。如果您不确定,可以转换并测试小写/大写字符串

如果您只是在Shaun MaWhinney的MapLocation为空时尝试重定向到Leavers.html,则可以执行以下操作:

<%
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
%>

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

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

删除您的ElseIf子句

如果在结束后添加以下行

如果strStaffName=Shaun MaWhinney,则响应。重定向Leavers.html如果


显然,您也可以使用方法2尝试Server.Urlencode,您的代码没有问题。尝试替换Response.Redirect Leavers.html为Response.Write StaffName Hit:Response.End;看看它是否被打印出来。谢谢你,这份ElseIf声明对我帮助很大!感谢大家花时间帮我解答这个问题。非常感谢。
ElseIf Server.Urlencode(Request.QueryString("StaffName")) = "Shaun+MaWhinney" Then
Response.Redirect "Leavers.html"