JavaScript mit PHP kombinieren?

Hey, ich habe einen Ruf zu verlieren :wink:

Hehe. :smile:

Ja, das ist soweit richtig, sonst hätte ich dazu noch etwas
geschrieben :wink:

Das ist nur zur Hälfte richtig. Diese Art des Zeilenumbruchs
besteht unter Windows-Systemen. Unix arbeitet hingegen mit nur
einem Byte als Zeilenumbruch, ebenso wie Mac. Wobei sich
jedoch auch hier die Art des Umbruchs unterscheiden.

Weitere Informationen:
http://de.wikipedia.org/wiki/Zeilenumbruch

Danke sehr!

Entsprechend kann die Ersparnis etwas variieren, aber das ist
dann glaube ich wirklich Erbsenzählerei :smile:

Auf jeden Fall ist es gut zu wissen.

Ich vermute mal, dass es sich beim größeren Teil der Webserver um Unix-Systeme handelt. Insofern kann ich dann ja von einem Byte pro Zeilenumbruch ausgehen. :wink:

Nein. Ich beziehe mich hier ausschließlich auf PHP, nicht auf
JavaScript!

Ach so. Die Klammern bei echo hatten mich etwas
verwirrt. Denn das Sprach-Konstrukt, das - wie ich gerade hier
http://php.net/manual/de/function.echo.php gelernt habe -
nicht wirklich eine Funktion ist, wird ja ohne die Klammern
verwendet, zumindest kenne ich es nur so.

Stimmt, sorry, dass ich da nicht dran gedacht habe. Ich habe mir angewöhnt bei Funktionen immer ein () anzuhängen. Bei echo funktioniert es im Übrigen auch (!) mit Klammern, auch wenn es ansich keine Funktion ist.

Das ist ganz wichtig, denn JavaScript […]

Um ehrlich zu sein überfordert mich das Thema noch ein wenig.
Ich habe leider immer noch nicht richtig verstanden, wie ich
meine PHP-Funktion und mein JavaScript nun so kombiniere, dass
es funktioniert. :-/

Hmm… OK. Also: PHP wird aufgerufen und erzeugt dynamisch beim Aufruf eine HTML-Ausgabe. JavaScript befindet sich als Script im HTML-Code und wird im Browser ausgeführt. Wenn du nun die Funktion aus JavaScript in eine extra Datei „script.js“ kapselst, dann rufst du das „über PHP“ wie folgt auf:

<?php :// Funktionsaufrufe in PHP, die einen Header erzeugen, z.B.
//session\_start(); // Berechnung der Variablen $integerSekunden = funktion(); ?\> // Aufruf der Funktion "test", die sich in script.js befindet test(\<?php echo $integerSekunden; ?&gt:wink:; Text der Webseite ...

Damit hast du den Aufruf der Funktion (JS) mittels PHP in HTML integriert (verwirrend, nicht? :wink:).
Hier allerdings noch eine Ergänzung: Wenn die JS-Funktion HTML-Inhalte verändern soll (also z.B. den Inhalt eines DIVs verändern oder so, irgendwo soll ja schließlich angezeigt werden, wieviele Sekunden es noch sind), dann sollte die Funktion erst aufgerufen werden, wenn der komplette HTML-Code vom Server zum Client übertragen wurde, denn sonst kann es sein, dass das Element, auf das zugegriffen werden soll noch garnicht an den Client übertragen wurde und dann kommt es zu einem JS-Fehler (Wieder ein Mal die Thematik: Langsame Verbindung zum Server oder so). Grund hierfür ist, dass JavaScript dort ausgeführt wird, wo er sich im HTML-Code befindet. Außnahmen bilden z.B. Attribute wie onload="" im -Tag. Dieses führt nämlich Scripte erst aus, wenn die Seite vom Client zu Ende geladen wurde (also wenn alle Bytes übertragen wurden). Für das Beispiel würde es heißen, dass es folgendermaßen aussehen müsste:

<?php :// Funktionsaufrufe in PHP, die einen Header erzeugen, z.B.
//session\_start(); // Berechnung der Variablen $integerSekunden = funktion(); ?\> Text der Webseite ...

Außerdem spart das nochmal ein paar Byte :wink:

LG
Lutz

Da muss ich das erste Mal passen: So genau habe ich noch keine Datentransfers zwischen Server und Client überwacht. Möglicherweise werden Daten über HTTP auch immer mit dem 2-Byte-Zeilenumbruch übertragen, egal welches Eingangsformat die Datei aufweißt. Aber wie gesagt: Das ist Erbsenzählerei :wink:

Moin,

in HTML gibt es dazu das Tag .

Liebe Grüße,
-Efchen

Allerdings gibt es keine direkte
Schnittstelle zwischen PHP und JavaScript.

Doch. Ist bekannt unter dem Namen „AJAX“.
Würde ich aber beim vorliegenden Problem nicht wirklich empfehlen.

Liebe Grüße,
-Efchen

Ajax ist keine Schnittstelle zwischen PHP und JavaScript, sondern beschreibt lediglich eine Technik zum Zugriff auf Server-Ressourcen, ohne dass die gesamte Seite neu geladen werden muss. Man kann auf diese Weise aber genauso „nur“ mit JavaScript kommunizieren, wie es auch ohne Ajax möglich wäre, entsprechend ist es - zumindest für meine Auffassung - keine richtige Schnittstelle, zumal man auch noch XML zwischendrin benutzen müsste.

Das Noscript-Tag definiert ausschließlich eine Anzeige im Browser, dass JavaScript deaktiviert ist oder nicht unterstützt wird. Dadurch weiß das PHP-Script aber noch lange nicht, dass der Client kein JavaScript unterstützt.

Hi Lutz,

danke für deine Antworten! :smile:

Stimmt, sorry, dass ich da nicht dran gedacht habe.

Kein Grund sich zu entschuldigen. :wink:

Hmm…

Asche auf mein Haupt. :-/

OK. Also: PHP wird aufgerufen und erzeugt […]
Damit hast du den Aufruf der Funktion (JS) mittels PHP in HTML
integriert (verwirrend, nicht? :wink:).

Och, es geht. Mit so konkreten Beispielen fällt es mir viel leichter es zu verstehen. :smile:

Hier allerdings noch eine Ergänzung: Wenn die JS-Funktion […]

Super, ich glaube, jetzt habe ich’s endlich kapiert.

Außerdem spart das nochmal ein paar Byte :wink:

*g*

Vielen Dank!!

Liebe Grüße
Hugo

Du hast recht, das ist wirklich egal.

Hallo Efchen,

vielen Dank für den Tipp! Das kann ich bestimmt mal gebrauchen.

In diesem Fall wird es wohl nicht zum Einsatz kommen, denn der Countdown wird einmal in PHP und einmal in JS realisiert, die PHP-Version wird zunächst auf jeden Fall geladen und falls JS beim Client aktiv ist, wird dynamisch aktualisiert, ansonsten eben nicht. So hat es mir MrNiceGuy vorgeschlagen und ich finde das sehr gut.

Liebe Grüße
Hugo

Ich habe mir wenig Gedanken darüber gemacht, ob man Ajax nun als „Schnittstelle“ beschreibt. Ajax ist sowieso son Zwitter. Es ist ja auch keine Programmiersprache, wie manche sagen. Es ist eigentlich nur ein Name.

Aber mittels Ajax kann JavaScript mit PHP kommunizieren. Und daher wollte ich es einfach noch in die Runde werfen. Dass Ajax serverseitig nicht auf PHP beschränkt ist, ist mir klar, das hat aber dann doch gar nichts mehr mit dem Thread zu tun.

PHP weiß ja auch nicht, ob der Client (was ist das, fragt sich PHP?) JavaScript unterstützt und es interessiert PHP auch nicht.

Ich auch :smile:

Aber genau darum ging es in der Frage ja :wink:

Drum muss man es PHP eben irgendwie mitteilen. Das könnte z.B. über einen Link im erfolgen. Zu dem Zeitpunkt, wo die Seite schon im Client ist, ist es natürlich zu spät, die aktuelle Seite zu ändern.

In diesem Falle bietet sich wohl eher nicht an, aber es ist ein Tag, das man immer im Hinterkopf behalten kann, denn die wenigsten Webmaster wissen überhaupt von seiner Existenz.

Grüße,
-Efchen