Aldo: Parameter von PHP an eine JavaScript Funktion übergeben

Hallo, ich lese aus einer db daten aus und will diese an eine php datei weitergeben, die ich in ein js popup window laden will. Ich habe aber ein Problem mit der Parameterübergabe. So sieht der Code aus:

<?php
print "<html>";
print "<head>";
print "<title>Remove / Update</title>";
print "<script language="JavaScript" type="text/javascript">";
print "function info($data[0],$data[1]) {";
print "del=window.open("rem_pop.php?cd_id=$data[0]&name=$data[1]", "popup", "width=500,height=350,resizable=no, scrollbars=no,top=135,left=135");";
print "}";

print "</script>";

print "</head>";
print "<body>";

// php code, u.A. mysql Anfrage an DB
// ....

// Aufruf der js Funktion

print '<td><a href=inf.php target="_blank" onClick="info($data[0],$data[1]); return false;">Remove</a></td>';

print "</body>";
print "</html>";

Wie kann ich $data[0] und $data[1] korrekt an die js Funktion übergeben?
Vielen Dank im Voraus!!!
Gruss, Aldo

  1. Hallo, ich lese aus einer db daten aus und will diese an eine php datei weitergeben, die ich in ein js popup window laden will. Ich habe aber ein Problem mit der Parameterübergabe. So sieht der Code aus:

    <?php
    print "<html>";
    print "<head>";
    print "<title>Remove / Update</title>";
    print "<script language="JavaScript" type="text/javascript">";
    print "function info($data[0],$data[1]) {";
    print "del=window.open("rem_pop.php?cd_id=$data[0]&name=$data[1]", "popup", "width=500,height=350,resizable=no, scrollbars=no,top=135,left=135");";
    print "}";

    print "</script>";

    print "</head>";
    print "<body>";

    // php code, u.A. mysql Anfrage an DB
    // ....

    // Aufruf der js Funktion

    print '<td><a href=inf.php target="_blank" onClick="info($data[0],$data[1]); return false;">Remove</a></td>';

    print "</body>";
    print "</html>";

    Wie kann ich $data[0] und $data[1] korrekt an die js Funktion übergeben?

    Das JS Skript:
    print "function info(url) {";
    print "del=window.open(url, "popup", "width=500,height=350,resizable=no, scrollbars=no,top=135,left=135");";

    Der Link:
    print
       '<td><a href="rem_pop.php?cd_id=$data[0]&name=$data[1]"
        target="_blank"
        onClick="info(this.href);return false;">Remove</a></td>';

    Hat den vorteil das das ganze auch ohne JS funktioniert.

    Struppi.

  2. Halihallo Aldo

    print "function info($data[0],$data[1]) {";

    ^^^^^^^^^^^^^^^^^ function erwartet Variablen, keine Konstanten

    => function info( var1, var2 ) {...}

    print '<td><a href=inf.php target="_blank" onClick="info($data[0],$data[1]); return false;">Remove</a></td>';

    print "...", nicht ''. Siehe Output des Scripts!

    Wie kann ich $data[0] und $data[1] korrekt an die js Funktion übergeben?

    Evtl. müssen die Daten in Anführungszeichen stehen. Sieh dir doch mal deinen Code an!

    ---

    Probleme haben hier alle, die eine Frage stellen. Wichtiger wäre es eine Fehlermeldung
    zu posten, dass man _genau_ weiss, wo dein Problem ist. Sieh dir deinen Quellcode an
    und sieh nach, ob der von PHP generierte Output auch _wirklich_ JS/HTML tauglich ist.

    Viele Grüsse

    Philipp

    1. Ciao Philipp,

      OK, und wo soll ich die Wertzuweisung an die Variable machen, z.B.
      var1 = $data[0];
      var2 = $data[1];
      zwischen <script> und function info()? geht das überhaupt?

      Danke, Aldo

      1. Halihallo Aldo

        OK, und wo soll ich die Wertzuweisung an die Variable machen, z.B.
        var1 = $data[0];
        var2 = $data[1];
        zwischen <script> und function info()? geht das überhaupt?

        Überleg dir, was du tun möchtest! - Du willst irgendwo über

        onclick="info($data[0],$data[1]); return false;">Remove</a>

        die Funktion info aufrufen und _da_ übergibst du der Funktion die Werte $data[0] und
        $data[1]. Sonst nirgens, die funktion interessiert sich für $data[0 und 1] nicht die
        Bohne, da sie diese Werte als _Parameter_ erhält und diese Parameter über gibst du wie
        gehabt mit print "<a ... onclick="info('$data[0]', '$data[1]')"> ...".

        Viele Grüsse

        Philipp

        1. ok, d.h. ich muss $data[0,1] innerhalb der Funktion ändern. So?

          print "<script language="JavaScript" type="text/javascript">";

          function info() {
          var x = "$data[0]";
          var y = "$data[1]";
          print "del=window.open("rem_pop.php?cd_id=x&name=y", "popup", "width=500,height=350,resizable=no, scrollbars=no,top=135,left=135"); ";
          }

          print "</script>";

          ...

          print "<td><a href=inf.php target='_blank' onClick='info('$data[0]', '$data[1]'); return false;'>Remove</a></td>";

          Es gibt irgendein Problem mit der Zeile

          var x = "$data[0]";

          -->Parse error: parse error, unexpected T_VAR

          1. ok, d.h. ich muss $data[0,1] innerhalb der Funktion ändern. So?

            print "<script language="JavaScript" type="text/javascript">";

            function info() {
            var x = "$data[0]";
            var y = "$data[1]";
            print "del=window.open("rem_pop.php?cd_id=x&name=y", "popup", "width=500,height=350,resizable=no, scrollbars=no,top=135,left=135"); ";
            }

            print "</script>";

            ...

            print "<td><a href=inf.php target='_blank' onClick='info('$data[0]', '$data[1]'); return false;'>Remove</a></td>";

            Es gibt irgendein Problem mit der Zeile

            Warum machst du es nicht so, wie ich es dir empfohlen hab, dann funktioniert es auch ohne JS. Du verwendest schließlich die Variabeln x und y nicht weiter in JS, sondern als nur als Anhang in einer URL und da kann sie doch auch stehen bleiben, oder?

            Struppi.

            1. Jetzt gehts, vielen Dank an alle!!!
              Hab grad noch ne Frage:

              Datei x: Anzeige der Zeilen mit Links für Update und Remove, die popup erzeugen
              Datei y: popup
              Datei z: wird beim klicken auf ok button von y ausgeführt

              ich möchte, dass y bei klicken von ok geschlossen wird und x sich refresht. so wie ich's bis jetzt habe wird z in y ausgeführt, y bleibt also sichtbar und enthält x

              In z habe ich folgenden Aufruf zum refreshen:

              <?php if ($update) { ?>
              <meta http-equiv="Refresh" content="0; url=x.php?cd_id='<?php print $cd_id; ?>'&name='<?php print $name; ?>'">
              <?php } ?>

              dadurch öffnet sich x aber eben in y. ich weiss nicht, wie der befehl lauten muss, um y zu schliessen, und ob ich ihn hier platzieren muss?

              Danke, Aldo

              1. dadurch öffnet sich x aber eben in y. ich weiss nicht, wie der befehl lauten muss, um y zu schliessen, und ob ich ihn hier platzieren muss?

                Wenn du das mit Javascript machen willst:

                Fenster öffnen und schliessen: http://www.netzwelt.com/selfhtml/javascript/objekte/window.htm

                Fenster refreshen und laden:
                http://www.netzwelt.com/selfhtml/javascript/objekte/location.htm

                Strupi.

          2. Halihallo Aldo

            ok, d.h. ich muss $data[0,1] innerhalb der Funktion ändern. So?

            Nein, nein, nein, die Funktion _bekommt_ die Daten von extern, dazu sind Funktionen
            ja gedacht: Sie bekommen von extern definierte Werte und verarbeiten diese. Die
            Daten werden über onclick="info('$data[0]', '$data[1]');" gegeben und die Funktion
            kann sie über die Parameter (function info(var1, var2); hier sind die Parameter var1 und
            var 2 ) verarbeiten.

            function info() {

            function info(data1, data2) {...}

            wobei data1 und data2 JavaScript-Variablen sind.

            var x = "$data[0]";
            var y = "$data[1]";

            Nein, du kannst im JS-Code dann über data1 und data2 auf diese Werte zugreifen.

            print "<td><a href=inf.php target='_blank' onClick='info('$data[0]', '$data[1]'); return false;'>Remove</a></td>";

            Hier und _nur_ hier wird auf $data[...] zugegriffen, alles andere sind JS-Variablen.

            -->Parse error: parse error, unexpected T_VAR

            dass print " ... var x = "$data[0]"; ... " einen Fehler ergeben muss, ist dir klar?
            wenn du '"' als Quotes in PHP verwendest, düfen diese _nicht_ im String vorkommen, oder
            du musst sie _kodieren_ =>  print " ... "$data[0]" ..."

            und nocheinmal den Tipp: Sieh dir den generierten JavaScript und HTML-Code an, dann
            _siehst_ du diese Fehler.

            Viele Grüsse

            Philipp

            PS: Befolge den Ratschlag von Struppi!

  3. Hallo Aldo,

    print "function info($data[0],$data[1]) {";

    übergib der funktion info() ganz normale Parameter (wie das geht steht in selfhtml)

    print "del=window.open("rem_pop.php?cd_id=$data[0]&name=$data[1]",[...]);";

    hier hängst du die Parameter die du im Funktionsaufruf übergeben hast and cd_id bzw. name

    print '<td><a href=inf.php target="_blank" onClick="info($data[0],$data[1]); [...]';

    hier schreibst du die Variablen $data[0] bzw. $data[1] rein, wie du es ja jetzt schon machst, allerdings musst kannst du - wenn du einfache Anführungszeichen verwendest - die Variablen nicht einfach reinschreiben, du musst den Sting "unterbrechen" z.B. so: echo 'blabla'.$variable.'blabla';

    alternativ kannst du natürlich die Daten mit php auch gleich in dein window.open("rem_pop.php?cd_id=$data[0]...",...) schreiben.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|