无法访问VBscript中的GET变量

时间:2010-07-12 15:16:48

标签: html vbscript webrequest

我是VBscript的新手,所以可能有一个非常简单的解决方案。

基本上,我的主页面上的按钮实际上只是作为其他页面的链接。在链接中我想传递信息,所以我使用标准的?variable = value,如下所示:

<input type="button" name="saveButton" value="Save Systems" onclick="location.href='save.html?step=1'" />
<input type="button" name="loadButton" value="Load Systems" onclick="location.href='load.html?step=1'" />

我查找了如何在vbscript中访问GET变量,并且我看起来所说的每个地方都使用Request.QueryString(“variableName”)

所以在我的save.html页面中,我试图首先打印步骤的值,只是为了确保我得到它,然后才开始实际处理我的所有代码。这就是我挂断电话的地方。

<script type="text/vbscript">
        document.write("<p>in the script<br>")
        document.write("stepVar = ")
        stepVar = Request.QueryString("step")
        document.write(stepVar)
        document.write(stepVar & "</p>")
</script>

... (rest of the page)

(我尝试了两种不同的打印语句,以防我连接不正确,但都没有工作。)当我点击主页面上的保存按钮,导致我去save.html?step = 1,它打印

in the script
stepVar = 
(rest of the page)

所以我猜步骤会回来吗?这是不起作用的原因,因为我没有通过表单提交我的变量?这不应该与它有任何关系......对吗?为什么我没有得到我的变量/如何获得“步骤”的值,以便我可以根据变量的值采取不同的操作?

3 个答案:

答案 0 :(得分:3)

Request.QueryString适用于ASP页面(或ASP.net页面中的VB.net)中的VBScript,它在服务器上执行,而不是在客户端浏览器中执行。

如果您有正确配置的Web服务器,则以下保存为.asp页面将输出您所期望的内容(服务器正在执行<% %>块内的所有内容);

<%@LANGUAGE="VBSCRIPT"%>
<%
        response.write("<p>in the script<br>")
        response.write("stepVar = ")
        stepVar = Request.QueryString("step")
        response.write(stepVar)
        response.write(stepVar & "</p>")
%>

(如果您想在客户端Web浏览器中执行此操作,可以使用location对象,here是一个js示例,与VBScript不同,它可以在任何浏览器中使用)

答案 1 :(得分:0)

您可以使用客户端脚本来访问此值。这个问题涉及类似的主题:

How can I get query string values in JavaScript?

答案 2 :(得分:0)

必须编写一个解析URL的函数。在javascript中看到了其中的几个,但我发现在VBScript中编写的唯一一个没有使用正则表达式而且没有工作。在试图让函数编译,然后吐出答案之后,我决定使用正则表达式编写自己的函数,就像我见过的javascript函数(包括在其他响应中链接的函数)对这个问题)。

所以没有人必须再次这样做:

Function GetParameterFromURI(sVarName)

    Dim oTempParamCollection, I, sTempString, sURI_Query
    sURI_Query = window.location.search

    Set myRegExp = New RegExp
    myRegExp.IgnoreCase = False
    myRegExp.Global = False
    myRegExp.Pattern = "(\?|&)" & sVarName & "=[a-zA-Z0-9]+"

    Set matchCollection = myRegExp.Execute(sURI_Query)

    Set match = matchCollection.Item(0)

    returnString = Mid(match.value, InStr(match.value, "=")+1, len(match.value))

    GetParameterFromURI = returnString

End Function

如果您使用Option Explicit,则必须确保在此之前所有内容都已变暗。我没打扰。

如果其他人需要此功能,我鼓励重新发布此代码;我很沮丧,这么简单的事情让我如此悲伤,不希望任何其他人!