2010-07-12 57 views
0

我是VBscript的新手,所以可能有一个非常简单的解决方案。无法在VBscript中访问GET变量

基本上,我有我的主页与按钮,真的只是作为链接到其他网页。在链接我想传递的信息,所以我用的是标准的变量=值,如下所示:?

<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'" /> 

我抬头如何访问我看了看说使用的Request.QueryString(GET VBScript和每一个地方变量“variableName”)

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

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

(我试过2条不同的打印语句,以防万一我被错误地串联,但既不工作。)当我点击我保存的主网页按钮,导致我save.html?步= 1时,打印

in the script 
stepVar = 
(rest of the page) 

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

回答

0

不得不写一个函数来解析URL。在javascript中看到其中的几个,但唯一一个我发现用VBScript写的没有使用正则表达式和DID NOT WORK。在厌倦尝试编译函数并吐出答案之后,我决定使用正则表达式编写自己的函数,就像我看到的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 

如果使用显式的选项,你将不得不作出在此之前将工作确保一切都Dim'd。我没有打扰。

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

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

(如果你想这样做在客户端的网页浏览器,你可以使用location对象,here是一个js例子,它不像VBScript中在任何浏览器中运行)

+0

谢谢,这应该是一个好的开始...我知道我很奇怪我使用VBScript而不使用ASP,但这是因为我正在为AGI的STK编写一个gui工具。我想我应该能够使用JavaScript的界面部分,所以也许我会做的。 – Lauren 2010-07-12 17:52:35