2010-07-12 2 views
0

Я новичок в VBscript, поэтому, возможно, это очень простое решение.Неисправность доступа к переменным GET в VBscript

В принципе, у меня есть моя главная страница с кнопками, которые действительно просто действуют как ссылки на другие страницы. В связи я хотел бы передать информацию, поэтому я использую стандарт переменная = значение, например, так:

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

Я посмотрел, как получить доступ GET переменные в VBScript и каждое место, которое я посмотрел сказал использовать 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) 

(я пробовал 2 разные операторы печати, только в случае, если я конкатенации неправильно, но ни работы.) Когда я нажимаю мой кнопку Сохранить на главной странице, что привело меня к save.html? Шаг = 1, это отпечатки

in the script 
stepVar = 
(rest of the page) 

Итак, я думаю, что шаг возвращается null? Причина в том, что это не работает, потому что я не представил свою переменную через форму? Это не должно иметь никакого отношения к этому ... не так ли? Почему я не получаю свою переменную/как могу получить значение «шаг», чтобы я мог принимать разные действия в зависимости от значения моей переменной?

ответ

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 

Если вы используете Option Explicit вы должны убедиться, что все Dim'd прежде, чем это будет работать. Я не беспокоился.

Я рекомендую повторить этот код, если кто-либо еще нуждается в этой функции; Я расстроен тем, что что-то так просто вызвало у меня столько горя и не желал бы этого никому!

3

Request.QueryString для VBScript в ASP-странице (или VB.NET в качестве страницы ASP.net), который запускается на выполнение на сервере , а не в браузере клиента.

Если у вас есть правильно настроенный веб-сервер, следующий сохраненный как страница .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, но это потому, что я кодирую инструмент gui для STK AGI. Я думаю, что я должен использовать javascript для части интерфейса, поэтому, возможно, я сделаю это вместо этого. – Lauren

Смежные вопросы