Проблемы с доступом к переменным GET в VBscript - PullRequest
0 голосов
/ 12 июля 2010

Я новичок в 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'" />

Я посмотрел, как получить доступ к переменным GET в vbscript, и в каждом месте, где я смотрел, использовался Request.QueryString ("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? Step = 1, он печатает

in the script
stepVar = 
(rest of the page)

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

Ответы [ 3 ]

3 голосов
/ 12 июля 2010

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 объект, здесь - это пример js, который в отличие от VBScript будет работать в любом браузере)

0 голосов
/ 14 июля 2010

Пришлось написать функцию для разбора 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, вам нужно убедиться, что все Dim'd, прежде чем это сработает. Я не беспокоился.

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

0 голосов
/ 12 июля 2010

Вы можете использовать клиентский скрипт для доступа к этому значению. Этот вопрос касается аналогичной темы:

Как получить значения строки запроса в JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...