2010-07-12 54 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