Deutsch English

Variablen von PHP nach JavaScript senden

In diesem Blog möchte ich ein wenig über verschiedene Ansätze schreiben,
um Variablen von PHP nach JavaScript zu senden.


Mit Ajax die benötigen Daten vom Server holen

Diese Methode solltet ihr bevorzugen, da serverseitige und clientseitige
Skripts vollständig separiert sind. Ihr braucht dafür ein PHP-File,
welches euch den Ouput generiert(am Besten als JSON) und ein JS-File
welches den Ouput holt.

Bsp für JavaScript-Datei:


<script>
     function reqListener () {
          console.log(this.responseText);
     }

     var oReq = new XMLHttpRequest(); //New request object
     oReq.onload = function() {
          //Hier könnt ihr machen, was ihr mit dem Response machen wollt
          //Die Daten stehen in this.responseText
          alert(this.responseText);
     };
     oReq.open("get", "getData.php", true);
      //                ^ Die PHP-Datei die den Output generiert
     oReq.send();
</script>


Vorteile:

  • Bessere Seperation zwischen Layers
  • Bessere Lesbakeit
  • Daten können nicht im Markup gefunden werden
  • Erlaubt asynchronen Datentransfer

Nachteile

  • Latenzen durch HTTP Requests
  • Keine Information über HTTP Request

 

Mit echo die Daten in Seite schreiben und in JS aus dem Dom holen

Die Methode ist weniger zu bevorzugen als die Erste. PHP und JavaScript
sind allerdings noch immer in dem Sinn getrennt, dass kein PHP direkt
in JavaScript ist. Die Idee bei der Implementierung ist, dass ein
Element erzeugt wird, welches unsichtbar für den User ist, aber sichtbar
für JavaScript.

Beispiel-Datei:

<div id="ziel" style="display: none;">
     <?php
          $output = "10";
          echo htmlspecialchars($output); // Escape ist nötig um gültiges HTML zu bekommen
     ?>
</div>
<script>
     var div = document.getElementById("ziel");
     var myData = div.textContent;
</script>

Vorteile

  • Schnell, auch bei größeren Datenmengen

Nachteile

  • Potentiell unsemantisches Markup
  • HTML Code wird "diry"
  • Schwieriger strukturierte Daten zu bekommen
  • Enge Koppelung von PHP und Datenlogik


Mit echo die Daten direkt an JS senden

Ist wahrscheinlich am leichtesten zu verstehen, allerdings
schwer richtig einzusetzen. Verwendet die Methode nur, wenn
ihr wisst was ihr tut.

Bsp für Implementierung:

<script>
     var data = <?php echo json_encode("10", JSON_HEX_TAG); ?>;
</script>


Vorteile

  • Leicht zu implementieren
  • Macht HTML nicht "dirty"

Nachteile

  • Unsicher
  • Sehr enge Koppelung von PHP und Datenlogik
  • Strukturierte Daten sind sehr schwierig