Ihr Code ist in zwei völlig separate Teile unterteilt, die Server- und die Client-Seite .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Die beiden Seiten kommunizieren über HTTP-Anfragen und -Antworten. PHP wird auf dem Server ausgeführt und gibt HTML- und möglicherweise JavaScript-Code aus, der als Antwort an den Client gesendet wird, in dem der HTML-Code interpretiert und das JavaScript ausgeführt wird. Sobald PHP die Ausgabe der Antwort beendet hat, wird das Skript beendet und auf dem Server geschieht nichts, bis eine neue HTTP-Anforderung eingeht.
Der Beispielcode wird folgendermaßen ausgeführt:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Schritt 1, PHP führt den gesamten Code zwischen <?php ?>
Tags aus. Das Ergebnis ist folgendes:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
Der file_put_contents
Aufruf führte zu nichts, er schrieb nur "+ foo +" in eine Datei. Das<?php echo 42; ?>
Aufruf führte zur Ausgabe "42", die sich jetzt an der Stelle befindet, an der sich dieser Code befand.
Dieser resultierende HTML / JavaScript-Code wird jetzt an den Client gesendet, wo er ausgewertet wird. Der alert
Aufruf funktioniert, während die foo
Variable nirgendwo verwendet wird.
Der gesamte PHP-Code wird auf dem Server ausgeführt, bevor der Client überhaupt mit der Ausführung von JavaScript beginnt. Die Antwort enthält keinen PHP-Code mehr, mit dem JavaScript interagieren könnte.
Um PHP-Code aufzurufen, muss der Client eine neue HTTP-Anforderung an den Server senden. Dies kann mit einer von drei möglichen Methoden geschehen:
- Ein Link, über den der Browser eine neue Seite lädt.
- Eine Formularübermittlung, die Daten an den Server sendet und eine neue Seite lädt.
- Eine AJAX- Anforderung, bei der es sich um eine Javascript-Technik handelt, mit der eine reguläre HTTP-Anforderung an den Server gesendet wird (wie 1. und 2.), ohne jedoch die aktuelle Seite zu verlassen.
Hier ist eine Frage, die diese Methode detaillierter beschreibt
Sie können auch JavaScript verwenden, um den Browser dazu zu bringen, eine neue Seite zu öffnen window.location
oder ein Formular zu senden, wobei die Möglichkeiten 1. und 2 emuliert werden.
window.open
Seite auch mit einem Iframe öffnen oder eine Seite laden.