surreal: Wieder mal ein Problem mit der Variablenübergabe von JS an PHP

Hallo alle zusammen,

ich kann mir voerstellen, dass diese Art von Frage nervt weil sie so ähnlich schon wer weiß wie oft im Forum steht. Aber ich habe die letzten drei Stunden in sämmtlich Foren verbracht und keine Antwort auf meine Frage gefunden.

Wie lautet die genaue Syntax um in einer URL Parameterübergabe eine JS Variable an eine php Datei zu schicken!

Ich habe das Prinzip verstanden. Wenn ich einen festen Wert eingebe funktioniert die ganze Sache auch. Aber eben nicht mit der Variablen von JS.

Zur Erklärung: Ich versuche in einer Startseite die Browserinformationen per JS zu erfahren und sie dann in eine PHPSeite zuschicken.

<map name="m_intro1_r2_c2">
<EMBED SRC="herz.wav" HIDDEN="TRUE" AUTOSTART="FALSE" MASTERSOUND NAME="sound">
<area shape="rect" coords="24,25,548,218" href ="1.php?v=********* "; alt="" onMouseOut="MM_swapImage('intro1_r2_c2','','intro1_r2_c2.jpg',1)" onMouseOver="MM_swapImage('intro1_r2_c2','','intro1_r2_c2_f4.jpg',1);java script:document.sound.play()" onClick="MM_swapImage('intro1_r2_c2','','intro1_r2_c2.jpg',1)">
</map>

Da wo die Sterne sind wil ich die Variable übergeben!

Wie geht das? Oder ist mein Ansatz schon völig falsch?
Es ist ja eigentlich hier nur noch reiner HTML Code.

Vielen Dank!

-surreal-

  1. hiho,

    das ist html, was du da hast. das kann eh nicht wissen, was der wert deiner js-variable ist. wenn, dann musst du diesen code dynamisch von js erzeugen lassen:

    [..]href ="1.php?v=<script type='text/javascript'>GetVarValue()</script>" [..]

    und dann am besten eine funktion:

    function GetVarValue(){

    //alles, was zu ermittlung deines wertes gehört
      var v = [..]

    // eigentliche ausgabe in die html-seite
      document.write(v);

    }

    denke mal, dass es so funktionieren müsste

    gruss hein

    1. Hallo Hain,

      ich habe auch schon über so eine Variante nachgedacht habe sie aber nicht umsetzen können. Ich bin von C und C++ erst kürzlich auf die Sprachen im Web gekommen! Ich dank Dir erst mal wie verrückt und werde es gleich mal ausprobieren. Ich hatte nämlich auch schon echt schlechte Laune! :)

      -surreal-

    2. Hi,

      das ist html, was du da hast. das kann eh nicht wissen, was der wert deiner js-variable ist. wenn, dann musst du diesen code dynamisch von js erzeugen lassen:
      [..]href ="1.php?v=<script type='text/javascript'>GetVarValue()</script>" [..]

      Unsinn. Du kannst kein Element (hier: script) in ein Tag (hier: start-tag des a-Elements) schreiben, auch nicht in einen Attribut-Wert (hier: Wert des href-Attributs).

      Es muß der gesamte Link per Javascript geschrieben werden.
      Dabei kann an der gewünschten Stelle der Variablenwert eingesetzt werden (unter Beachtung der üblichen Regeln für String-Verkettung).

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. Unsinn.

        absoluter unsinn aber auch. wie konnte ich mich nur erdreisten, das nicht vorher auszuprobieren, bevor ich es poste ... *tztz*. aber eine buddel bier später wurde mir das auch klar, und habe mich schon korrigiert ;-)

        gruß hein

        1. Hi,

          absoluter unsinn aber auch. wie konnte ich mich nur erdreisten, das nicht vorher auszuprobieren,

          Das braucht man gar nicht auszuprobieren - es kann aus prinzipiellen Gründen (SGML...) nicht funktionieren.

          cu,
          Andreas

          --
          Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
          http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
        2. Hallo,

          ich danke allen die mir geholfen haben. Ich habe da Problem jetzt gelöst. Ich habe wie Du es vorgeschlagen hast den anfang des Links mit JavaS generieren lassen! Hein, Du brauchst dir doch keinen Kopf machen wegen deinem ersten Posting. Meine erste Erfolgsmeldung ist ja wohl die oberpeinlichste. Heute habe ich schon einen ganz anderen blick für die Sache. Ich war gestern nach ca. 5h Computer auch schon recht müde!

          wie schon gesagt, Danke!

          -surreal-

  2. Hallo,

    Warum so kompliziert?
    Ohne jetzt auf den Sinn und Unsinn von Browser-Detection eingehen zu wollen, PHP weiss ohnehin, womit du surfst. Schau mal im Manual unter 'Predefined Variables' und da im speziellen unter 'HTTP_USER_AGENT'.

    Wenn Du es unbedingt mit Javascript machen willst:
    zuerst fingerst Du den Browser im <head> raus, und zwar so:
    http://www.dcljs.de/faq/antwort.php?Antwort=browser_ermitteln
    in der Abwandlung:
    if ((document.all) && (window.offscreenBuffering))
    {
      mein_browser = 'ie'
    else if (...
    usw.

    Dann fuegst Du in Dein Script ein:
    ...href ="1.php?<sript type="text/javascript">document.write(mein_browser)</script>"; alt="" onMouseOut...

    Dieter

  3. Ich bins wieder,

    das eigentlich Problem habe ich jetzt erst einmal gelöst! mit einer Variation des Vorschlages von Hein!

    Funktion:

    function GetVar()
    {
       var weite=bildweite();
       document.writeln("1.php?v="+weite+"");
    }
    Aufruf:

    ...href="javascript:GetVar()" alt=""...

    PHP Datei:

    <?php
     echo $v;
    ?>

    deren Ausgabe:

    1.php?v=1024

    Soweit ist das ok. Ich kann den Ausruck ja nun beliebig bearbeiten aber ich würd trotzdem gern mal wissen wieso ich die ganze writeln Zeile als Parameter übergebe und es trotzdem funktioniert, oder andersrum. Habe da ein tiefgehendes Verständnissproblem! Kann das echt nicht nachvolziehen! *staun*

    -surreal

    1. Mist zu früh gefreut war doch nicht das erwartete Ergebniss.

      -surreal-

    2. ...href="javascript:GetVar()" alt=""...

      wie, das soll funktionieren?? mit diesem konstrukt führst du die GetVar-Funktion doch erst bei einem klick auf den link aus. und dann schreibt sie das ergebnis einfach in die seite als zeile, aber das ist doch dann kein link.

      die variante, die ich vorgeschlagen hatte, schreibt sofort beim laden der html-seite den richtigen link an die entsprechende stelle, damit beim klick auf den link sofort die seite 1.php angesprungen werden kann...

      gruß hein

      1. Hast Du das schon ausprobiert ich bekomme es nicht hin!

        -surreal-

        1. Hast Du das schon ausprobiert ich bekomme es nicht hin!

          -surreal-

          hiho,

          ax verdammich ich hatte das wiede rmit den anführungszeichen nicht bedacht. mit folgender variante funktioniert es auf alle fälle:

          <html>
          <head>
          <script>
          function GetVar(){

          //alles, was zu ermittlung deines wertes gehört
            // bsp kommt 1000 raus
            var v = 1000;

          // eigentliche ausgabe in die html-seite
            document.write("<a href='1.php?v="+ v +"'>LinkText</a>");

          }
          </script>
          </head>
          <body>
          Text Text <script type='text/javascript'>GetVar()</script> Text Text
          </body>
          </html>

          .. problem ist nur, ich weiss nicht, ob du den LinkText dynamisch erstellst, ode rob es auf diese art und weise ausreicht.
          das problem ist, wenn in html die anführungszeichen unzureichend geschlossen sind (wie in meinem ersten vorschlag), kann es nciht funktionieren. denn obwohl das d.write sofort den wert an die richtige stelle in der seite schreibt, ist das nicht der original-code, den der browser erst empfangen hat. und weil für ihn beim ersten parsen die anführungszeichen nicht geschlossen waren, konnte es nicht funktionieren.

          hach, das ist schon so eine sache mit js und dynam. seitengenerierung, es gibt ja nicht umsonst php ;-)
          hoffe trotzdem, es nutzt dir was ..

          gruß hein