Hakan: Ajax mit PHP

Hallo Leute,

ich bin zwar in PHP einigermaßen fit, aber in Bezug auf JS bzw. Ajax noch nicht gar so fit.

Jedenfalls hab ich folgendes Problem:

Ich habe eine start.php-Seite. Darin befindet sich ein Link, der auf eine andere PHP seite verweist. In dem Link wird noch ein Parameter übergeben.

Stinknormaler Link: main.php?name='hakan'

In der main.php wird eine externe js-Datei aufgerufen (ajax). jetzt muss ich natürlich dieser js-Datei auch die Variable 'name' übergeben.

Ich dachte, ich mach im <script>-Tag globale Variablen:

<script type="text/javascript">
name = '<? echo $_REQUEST['name']; ?>';
</script>
<script type="text/javascript" src="names.js" ></script>
</head>
<body>
<p>Namen</p>
 <div id="name_content"></div>
</body>

Leider funzt das mit der globalen Variable in Verbindung mit PHP-Request nicht.

EIne intelligentere Lösung??

Danke im Voraus.

Gruß, Hakan

  1. echo $begrüßung;

    <script type="text/javascript">
    name = '<? echo $_REQUEST['name']; ?>';
    </script>
    Leider funzt das mit der globalen Variable in Verbindung mit PHP-Request nicht.

    Du hast ein clientseitiges Problem. PHP-Code ist dabei erst einmal irrelevant. Betrachte das was beim Client ankommt, und beschreibe bitte (möglichst präzise), wie sich "funzt nicht" in deinem Fall verhält.

    echo "$verabschiedung $name";

    1. Hallo,

      erst mal Danke, dass sich überhaupt jemand sich mein Problem anschaut! ;-)

      Das Problem ist eigentlich, dass PHP-Code innerhalb vom <script>-Tag nicht verarbeitet wird.
      Setze ich echo $REQUEST_['name']; vor oder nach dem <script>-Tag, so wird er vom Brower verarbeitet und angezeigt. Nur innerhalb vom <script>-Tag zeigt er nix an.

      Daraus ergibt sich, dass die globale Variable 'name' innerhalb des <script>-Tag nicht befüllt wird. (Es kommt also beim Client garnichts an. - Leer!)

      Wie übergebe ich jetzt aber diese Variable an die externe JS?

      Gruß, Hakan

      echo $begrüßung;

      <script type="text/javascript">
      name = '<? echo $_REQUEST['name']; ?>';
      </script>
      Leider funzt das mit der globalen Variable in Verbindung mit PHP-Request nicht.

      Du hast ein clientseitiges Problem. PHP-Code ist dabei erst einmal irrelevant. Betrachte das was beim Client ankommt, und beschreibe bitte (möglichst präzise), wie sich "funzt nicht" in deinem Fall verhält.

      echo "$verabschiedung $name";

      1. echo $begrüßung;

        Das Problem ist eigentlich, dass PHP-Code innerhalb vom <script>-Tag nicht verarbeitet wird.
        Setze ich echo $REQUEST_['name']; vor oder nach dem <script>-Tag, so wird er vom Brower verarbeitet und angezeigt. Nur innerhalb vom <script>-Tag zeigt er nix an.

        PHP-Code wird nicht vom Browser verarbeitet, PHP läuft auf dem Server. Wenn beim Browser PHP-Code ankommt, war die Verarbeitung auf dem Server aus welchen Gründen auch immer nicht erfolgreich.

        Der Unterstrich kommt vor das REQUEST. Im zitierten Script war es noch richtig, jetzt hast du ihn hintendran gehängt. Verwende immer die Langform <?php. Die Kurzform <? ist auf manchen Servern abgeschaltet, weil sie Probleme mit dem XML-Header macht, der genauso anfängt. Die Langform ist immer verfügbar (wenn PHP auf dem Server installiert ist). Setz zur Fehlersuche am Scriptanfang das error_reporting auf E_ALL (und display_errors auf on), damit dir Zugriffe auf nicht vorhandene Variablen angezeigt werden. So wird man auch auf Tippfehler hingewiesen.

        Daraus ergibt sich, dass die globale Variable 'name' innerhalb des <script>-Tag nicht befüllt wird. (Es kommt also beim Client garnichts an. - Leer!)

        Dafür gibt es keinen Grund. PHP wertet Teile außerhalb der PHP-Bereiche <?php ...?> nicht aus. Der Fehler hat eine andere Ursache.

        Wie übergebe ich jetzt aber diese Variable an die externe JS?

        _PHP-Variablen_ existieren nach Ende der Verarbeitung auf dem Server nicht mehr. Du kannst aber ihren _Inhalt_ in Form einer Zeichenfolge ausgeben, so dass sich am Ende in der Ausgabe ein Text befindet, der von Javascript als Variablenzuweisung erkannt wird.

        echo "$verabschiedung $name";