Steve: Java Script variable an PHP übergeben

gibt es eine möglichkeit, eine mit java script erstellte variable mit php weiter zu benutzen?

beide scripts laufen auf der selben seite.

danke, steve

  1. hi

    ja:

    in javascript:
      var myVar = 1;
      form.hiddenfeld = myVar1;

    im Html Formular:
    <INPUT type=hidden name="hiddenfeld">

    in php:

    print $hiddenfeld;

    grüße

    1. hi,

      in javascript:
      var myVar = 1;
      form.hiddenfeld = myVar1;

      im Html Formular:
      <INPUT type=hidden name="hiddenfeld">

      in php:
      print $hiddenfeld;

      muß die Seite dazu nicht erst neu aufgerufen und somit die Post-Variable übergeben werden?

      Grüße,

      Sebastian

      1. hi

        muß die Seite dazu nicht erst neu aufgerufen und somit die Post-Variable übergeben werden?

        ja das ist klar da php eine serveeseitige Sprache ist und javascript ein client seitige müssen die Daten natürlich auch irgendwie zum server kommen!

        bye

        1. hi,

          muß die Seite dazu nicht erst neu aufgerufen und somit die Post-Variable übergeben werden?

          ja das ist klar da php eine serveeseitige Sprache ist und javascript ein client seitige müssen die Daten natürlich auch irgendwie zum server kommen!

          die Frage war ja auch mehr rhetorisch gemeint. Ich weiß zwar nicht, wozu dies notwendig sein sollte, aber ich frage mich, nur so zum Spaß, ob man nicht auch ohne Neuaufruf einen Wert übergeben kann ...

          Gruß,

          Sebastian

          1. hi

            nein wie denn? wenn der client einen Wert (variable) setzt, dann ist das schön und gut aber woher soll der server den wert dieser variable wissen ohne das der client ihm das über die leitung schickt.

            aber einfachste lösung um schnell eine wert zu bekommen:

            <?
               if(isset($hiddenfeld))
               {
                   print "Das Hiddenfeld: $hiddenfeld";
               }

            ?>

            <script language=javascript>

            form.hiddenfeld = "irgendwas";
            </script>

            <form action="dieselbeseite.php" method="post" name="form">
            <input type=hidden name="hiddenfeld">
            ...abschicken durch einen submit button oder aus javacript mit form.submit...
            </form>

            grüße

            1. hi

              nein wie denn? wenn der client einen Wert (variable) setzt, dann ist das schön und gut aber woher soll der server den wert dieser variable wissen ohne das der client ihm das über die leitung schickt.

              man könnte ja z.B. ein Cookie mit javascript setzen , den Inhalt dann mit flush() zum Browser schicken, und das Cookie dann mit PHP auslesen und weiterverarbeiten?! [Keine Ahnung ob das geht ...]

              Grüße,

              Sebastian

              1. hi

                auch der cookie wird auf dem client gespeichert

                bye

              2. Aloha!

                man könnte ja z.B. ein Cookie mit javascript setzen , den Inhalt dann mit flush() zum Browser schicken, und das Cookie dann mit PHP auslesen und weiterverarbeiten?! [Keine Ahnung ob das geht ...]

                Der Cookie wird aber erst beim nächsten Seitenabruf (das kann die gleiche Seite oder eine andere sein) beim Server ankommen, und erst dann kann man sie verwerten.

                Du mußt dir einfach nur klarmachen, zu welcher Zeit welche Sprachen zum Einsatz kommt:

                1. Der Browser fordert eine PHP-Seite an.
                2. Der Server startet den PHP-Interpreter und arbeitet das Skript ab.
                3. Das Resultat des Skriptes ist eine HTML-Seite, die der Webserver an den Browser schickt.
                4. Der Browser empfängt die HTML-Seite und verarbeitet sie. Dabei werden u.U. externe Javascripte, Bilder und CSS-Dateien entdeckt und nachgeladen.
                5. Der Browser beginnt, die HTML-Datei zu rendern. Dabei werden die ersten Javascript-Kommandos ausgeführt.
                6. Wenn die Seite komplett geladen und angezeigt ist, kommt <body onload="..."> an die Reihe.
                7. Ende im Gelände. Wenn ein Link geklickt oder ein Formular abgeschickt wird, beginnt das Spiel wieder bei 1.

                Bemerke, daß in Schritt 2 PHP involviert ist, und erst ab Schritt 5 Javascript. Das bedeutet: Wenn Javascript etwas weiß (einen Wert in einer Variablen hat), dann kann es dieses Wissen nur durch Anforderung einer neuen Seite an PHP weitergeben. Die beiden Scripte laufen _nicht_ gleichzeitig ab!

                - Sven Rautenberg

                1. Auch Aloha!

                  man könnte ja z.B. ein Cookie mit javascript setzen , den Inhalt dann mit flush() zum Browser schicken, und das Cookie dann mit PHP auslesen und weiterverarbeiten?!

                  Der Cookie wird aber erst beim nächsten Seitenabruf (das kann die gleiche Seite oder eine andere sein) beim Server ankommen, und erst dann kann man sie verwerten.

                  ...

                  Bemerke, daß in Schritt 2 PHP involviert ist, und erst ab Schritt 5 Javascript. Das bedeutet: Wenn Javascript etwas weiß (einen Wert in einer Variablen hat), dann kann es dieses Wissen nur durch Anforderung einer neuen Seite an PHP weitergeben. Die beiden Scripte laufen _nicht_ gleichzeitig ab!

                  ist im Prinzip klar. Die Idee war ja, den Javascript-Part schon mal mit flush() (oder in einem Frameset) an den Browser zu senden, um dann beim Schicken des Rests gleich den eben gesetzten Cookie per PHP auszulesen.

                  Na ja, ist auch egal wenn's nicht geht - ich wüßte sowieso keine praktische Anwendung. D.h. doch, vielleicht könnte man so z.B. die Bildschirmgröße oder irgendeinen anderen nur per Javascript zugänglichen Parameter an den Server übermitteln und gleich eine passende Seite ausliefern ...

                  Danke und eine gute Nacht,

                  Sebastian

                  1. Yo!

                    ist im Prinzip klar. Die Idee war ja, den Javascript-Part schon mal mit flush() (oder in einem Frameset) an den Browser zu senden, um dann beim Schicken des Rests gleich den eben gesetzten Cookie per PHP auszulesen.

                    Der Cookie wird erst beim nächsten Seitenaufruf an den Server geschickt. Da kannst du mit Javascript Cookies setzen, soviel du willst. Der Cookie ist nämlich ein Bestandteil des HTTP-Headers, den der Browser an den Server sendet. Und wenn PHP aktiv ist, dann hat der Server diesen Header schon lange empfangen.

                    Ok, man kann diese Senderei natürlich provozieren, indem z.B. vom Javascript aus "Bilder" geladen werden, die in Wirklichkeit ebenfalls Scripte sind. Nur wird es schwierig werden, die Cookie-Informationen dann in die bereits laufende Seite zu pflanzen.

                    Ok, das könnte man eventuell auch noch hinkriegen, indem man die Daten vom Bilderscript aus in eine Datenbank oder Datei schreibt, und mit dem Seitenscript solange wartet, bis die Information da ist - dann _muß_ aber zwingend das flush() funktionieren. Und das kann man leider nicht garantieren, da zu viele Zwischenstationen (Proxys etc.) einem das Ergebnis (eine sozusagen gestreamte HTML-Datei) versauen können.

                    Na ja, ist auch egal wenn's nicht geht - ich wüßte sowieso keine praktische Anwendung. D.h. doch, vielleicht könnte man so z.B. die Bildschirmgröße oder irgendeinen anderen nur per Javascript zugänglichen Parameter an den Server übermitteln und gleich eine passende Seite ausliefern ...

                    Dann lieber eine Vorschaltseite machen, auf der mit Javascript die Informationen abgefragt werden, die man will. Dann ist auf der nächsten Seite alles in Butter.

                    Wer's ganz schlau machen will, bastelt für jede seiner Seiten solch eine Doppelseite - dann muß man aber zwingend mit Sessions arbeiten. Und das ist für das simple Ausliefern von Seiten nun wirklich Overkill.

                    - Sven Rautenberg