Ronny Steinbeck: Mit ASP VBScript Variablen auslesen???

Hallo!
Wer kann da wohl weiterhelfen?

Folgendes Problem:
Wie kann ich mit ASP auf Variablen zugreifen, die in einem VBScript (oder JavaScript) gesetzt wurden?

Bsp:

<HTML>
<HEAD>
</HEAD>
<BODY>

<script language="VBScript">
public function test2()
 test2 = "Hallo"
end function
</script>

<script language="VBScript">
test = test2
document.write "VB-Test: " & test & "<br>"

</script>

<%Response.Write "ASP-Test: " & test & "<br>"
%>

</BODY>
</HTML>

Die 2. Ausgabe mittels response.write gibt nicht "Hallo" aus.

Wer hat die Lösung?

  1. Hallo!
    Wer kann da wohl weiterhelfen?

    Folgendes Problem:
    Wie kann ich mit ASP auf Variablen zugreifen, die in einem VBScript (oder JavaScript) gesetzt wurden?

    Bsp:

    <HTML>
    <HEAD>
    </HEAD>
    <BODY>

    <script language="VBScript">
    public function test2()
    test2 = "Hallo"
    end function
    </script>

    <script language="VBScript">
    test = test2
    document.write "VB-Test: " & test & "<br>"

    </script>

    <%Response.Write "ASP-Test: " & test & "<br>"
    %>

    </BODY>
    </HTML>

    Die 2. Ausgabe mittels response.write gibt nicht "Hallo" aus.

    Wer hat die Lösung?

    Hi,

    was Du als 2. Ausgabe bezeichnest wird zuerst verarbeitet, weil ASP=Serverseitig. Die Funktion test2() wird erst beim Client verarbeitet.

    Das kann so unmöglich gehen!!!!

    Grüße aus Oberfranken

    Sven

  2. Nabend,

    Wer kann da wohl weiterhelfen?

    Sven hat ja schon wahrheitsgemäß geantwortet, aber ...

    <HTML>
    <HEAD>
    </HEAD>
    <BODY>

    <script language="VBScript">
    public function test2()
    test2 = "Hallo"
    end function
    </script>

    <script language="VBScript">
    test = test2
    document.write "VB-Test: " & test & "<br>"

    ... hier wird wirklich "Hallo" ausgegeben? Ist denn bei einer
    public function auch der ganze Inhalt public?

    Zweifel ...

    Holger

  3. Also, dann will ich mal das Problem konkretisieren:

    Nach einer Datenbankabfrage können evtl. zu viele Datensätze erhalten werden. Dann will ich eine MsgBox (VBScript) oder von mir aus auch confirm(JavaScript) darstellen, und nachdem der Benutzer auf OK oder Abbrechen geklickt hat, sollen entweder die Datensätze angezeigt werden oder nicht. Das Problem dabei ist: Unter ASP kann und darf ich keine MsgBox anzeigen (serverseitig) also geht das nur mittels Skript (clientseitig).
    nachdem der Benutzer also z.B. Ok geklickt hat will ich die Datensätze mittels ASP (z.B. response.write rst("Feld1") ) ausgeben.
    Also muss ich irgendwie aus meinem restlichen ASP-Script auf das entsprechende Benutzergeklicke abfragen können.
    Nur wie?

    1. Hi Ronny,

      Dazu hast Du eigentlich blos die Möglichkeit die Anzahl der Datensätze zu zählen und daraufhin eine Meldung auszugeben, und bei Ok die Seite neu aufzurufen.

      z.B. so: list.asp?listen=ja
      und in der Datei dann:
      if(Request.QueryString("listen")=="ja").... Datensätze auflisten

      Ich hoffe das hilft Dir

      Grüße aus Oberfranken

      Sven

      1. Ja, soweit bin ich inzwischen auch schon gekommen. nur sollen dann noch weitere variablen angehängt werden. die kennt wiederum das vbscript nicht, weils vaiablen innerhalb des asp-skripts sind. das lässt sich aber mittels parameterübergabe lösen. das sollte also soweit die lösung sein.
        nur: kann innerhalb vbscript auch sowas ähnliches wie server.htmlencode gemacht werden? manche variablen werden nicht korrekt als querystring übergeben. z.b. ein teil eines sql-strings mit datum (between #...# and #...#) übergeben und der wird nicht komplett übermittelt sondern beim 1. #-Zeichen abgebrochen. Kann das #-Zeichen htmlcodiert-dargestellt werden?
        danke für alle bisherigen infos.

        Hi Ronny,

        Dazu hast Du eigentlich blos die Möglichkeit die Anzahl der Datensätze zu zählen und daraufhin eine Meldung auszugeben, und bei Ok die Seite neu aufzurufen.

        z.B. so: list.asp?listen=ja
        und in der Datei dann:
        if(Request.QueryString("listen")=="ja").... Datensätze auflisten

        Ich hoffe das hilft Dir

        Grüße aus Oberfranken

        Sven

        1. Ja, soweit bin ich inzwischen auch schon gekommen. nur sollen dann noch weitere variablen angehängt werden. die kennt wiederum das vbscript nicht, weils vaiablen innerhalb des asp-skripts sind. das lässt sich aber mittels parameterübergabe lösen. das sollte also soweit die lösung sein.
          nur: kann innerhalb vbscript auch sowas ähnliches wie server.htmlencode gemacht werden?

          ja, kann:

          escape(variable)

          und dann zum weiterverwenden: unescape(variable)

          Grüße aus Oberfranken

          Sven

          1. Hab's ausprobiert, aber der I-Explorer kann daraufhin die Seite nicht öffnen.
            Werd's jetzt wahrscheinlich über Cookies lösen oder weisst du zufällig wie das # zeichen url- oder htmlcodiert dargestellt wird, also nicht über escape, sondern irgendwie mit &...
            eigentlich muss man das #-zeichen ja nicht extra codieren.
            ich denke mit cookies wirds auf jeden fall klappen.
            mfg und danke

            Ja, soweit bin ich inzwischen auch schon gekommen. nur sollen dann noch weitere variablen angehängt werden. die kennt wiederum das vbscript nicht, weils vaiablen innerhalb des asp-skripts sind. das lässt sich aber mittels parameterübergabe lösen. das sollte also soweit die lösung sein.
            nur: kann innerhalb vbscript auch sowas ähnliches wie server.htmlencode gemacht werden?

            ja, kann:

            escape(variable)

            und dann zum weiterverwenden: unescape(variable)

            Grüße aus Oberfranken

            Sven

            1. htmlcodiert: &#35;
              urlcodiert: %23

              Ich hoffe das hilft Dir weiter.

              Grüße aus Oberfranken

              Sven

              1. Danke!
                Ich habe es aber jetzt auf andere Weise gelöst. Der Abschnitt des QueryStrings liegt daran, dass er vermutlich einfach zu lang war.
                Die Lösung: Sollten zu viele Datensätze ausgewählt worden sein, wird eine JavaScript-Funktion aufgerufen, die die confirm-box ausgibt und daraufhin die nötigen variablen in ein formular schreibt, das nur hidden-felder enthält (da spielt die länge weniger eine rolle) und dann die seite neu öffnet. und so funzt das dann endlich mal...
                danke für alle infos

                htmlcodiert: &#35;
                urlcodiert: %23

                Ich hoffe das hilft Dir weiter.

                Grüße aus Oberfranken

                Sven

                1. Danke!
                  Ich habe es aber jetzt auf andere Weise gelöst. Der Abschnitt des QueryStrings liegt daran, dass er vermutlich einfach zu lang war.
                  Die Lösung: Sollten zu viele Datensätze ausgewählt worden sein, wird eine JavaScript-Funktion aufgerufen, die die confirm-box ausgibt und daraufhin die nötigen variablen in ein formular schreibt, das nur hidden-felder enthält (da spielt die länge weniger eine rolle) und dann die seite neu öffnet. und so funzt das dann endlich mal...

                  Ähm, das ist aber auch nicht die feine englische Art,

                  warum liest Du den eigentlichen Inhalt der Datenbank nicht erst dann aus wenn die Seite neu geladen wird?
                  Ansonsten ist eigentlich die ganze Neuaufruferei (tolle Wortschöpfung ;)) sinnlos, dann könntest Du die Daten auch gleich in einer Tabelle o.ä. auf die Seite Schreiben (mit style="visibility:hidden") und wenn der User auf ja klickt den Style in visible ändern.

                  Grüße aus Oberfranken

                  Sven

                  1. Hi Sven!
                    nö, das ist nicht möglich, weil's msgraph-objekte sind, die in asp instanziiert werden. und bei z.b. 1000 datensätzen würd ich 100 diagramme machen und dann schmiert der server sowieso ab...
                    also muss ich vorher sicher sein, ob's wirklich notwendig ist die diagramm-darstellung zu starten.
                    mfg

                    Danke!
                    Ich habe es aber jetzt auf andere Weise gelöst. Der Abschnitt des QueryStrings liegt daran, dass er vermutlich einfach zu lang war.
                    Die Lösung: Sollten zu viele Datensätze ausgewählt worden sein, wird eine JavaScript-Funktion aufgerufen, die die confirm-box ausgibt und daraufhin die nötigen variablen in ein formular schreibt, das nur hidden-felder enthält (da spielt die länge weniger eine rolle) und dann die seite neu öffnet. und so funzt das dann endlich mal...

                    Ähm, das ist aber auch nicht die feine englische Art,

                    warum liest Du den eigentlichen Inhalt der Datenbank nicht erst dann aus wenn die Seite neu geladen wird?
                    Ansonsten ist eigentlich die ganze Neuaufruferei (tolle Wortschöpfung ;)) sinnlos, dann könntest Du die Daten auch gleich in einer Tabelle o.ä. auf die Seite Schreiben (mit style="visibility:hidden") und wenn der User auf ja klickt den Style in visible ändern.

                    Grüße aus Oberfranken

                    Sven

  4. Hallo,

    vergiss das clientseitige vb-script...

    alles per reinem asp machen und neuanforderungen über js confirm etc.

    je nach bedarf musst du nun js mit ausgeben oder nicht... dieses ergebnis auswerten und einen neuen request senden...

    clientseitiges vb-script kennt kein response.write...

    ich hab mit dem ie testweise schon riesenquerystrings durchgegeben und es funktionierte immer...
    clientseitig also vb-script weglassen... alles vom server erledigen lassen + entsprechendes html ergänzen...

    Odium