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.<form>
Daten und an den Server gesendet. Sie können Formulare mit Javascript bearbeiten, damit sie unterschiedliche Daten enthalten. Ja, diese Daten sind Teil der resultierenden HTTP-Anforderung, wenn sie beim Senden ordnungsgemäß Teil des Formulars sind. Es spielt keine Rolle, ob es im ursprünglichen HTML-Code enthalten war oder anschließend über Javascript hinzugefügt wurde.Um festzustellen, warum PHP- Code in JavaScript- Code nicht funktioniert, müssen wir verstehen, was clientseitige und serverseitige Sprachen sind und wie sie funktionieren.
Serverseitige Sprachen (PHP usw.) : Sie rufen Datensätze aus Datenbanken ab, behalten den Status über die zustandslose HTTP- Verbindung bei und erledigen viele Dinge, die Sicherheit erfordern. Sie befinden sich auf dem Server. Bei diesen Programmen wird der Quellcode niemals dem Benutzer angezeigt.
So können Sie leicht erkennen, dass serverseitige Sprachen HTTP-Anforderungen verarbeiten und verarbeiten. Wie @deceze sagte, wird PHP auf dem Server ausgeführt und gibt HTML- und möglicherweise JavaScript-Code aus, der als Antwort an den Client gesendet wird Der HTML-Code wird interpretiert und JavaScript ausgeführt.
Auf der anderen Seite befinden sich clientseitige Sprachen (wie JavaScript) im Browser und werden im Browser ausgeführt. Clientseitiges Scripting bezieht sich im Allgemeinen auf die Klasse von Computerprogrammen im Web, die clientseitig vom Webbrowser des Benutzers anstelle von serverseitig ausgeführt werden .
JavaScript ist für den Benutzer sichtbar und kann leicht geändert werden. Aus Sicherheitsgründen dürfen wir uns daher nicht auf JavaScript verlassen.
Wenn Sie also eine HTTP- Anforderung auf dem Server stellen, liest der Server zuerst die PHP-Datei sorgfältig, um festzustellen, ob Aufgaben ausgeführt werden müssen, und sendet eine Antwort an die Clientseite. Wiederum, wie @deceze sagte: * Sobald PHP die Ausgabe der Antwort beendet hat, endet das Skript und es passiert nichts auf dem Server, bis eine neue HTTP- Anfrage eingeht. *
Was kann ich nun tun, wenn ich PHP aufrufen muss? Dies hängt davon ab, wie Sie dies tun müssen: entweder durch erneutes Laden der Seite oder durch Verwenden eines AJAX-Aufrufs.
Gut gelesen:
quelle
Ihr Javascript wird auf dem Client ausgeführt, nicht auf dem Server. Dies bedeutet, dass dies
foo
nicht auf der Serverseite ausgewertet wird und daher sein Wert nicht in eine Datei auf dem Server geschrieben werden kann.Der beste Weg, um über diesen Prozess nachzudenken, ist, als würden Sie eine Textdatei dynamisch generieren. Der von Ihnen generierte Text wird erst dann zu ausführbarem Code, wenn der Browser ihn interpretiert.
<?php
Auf dem Server wird nur das ausgewertet, was Sie zwischen Tags platzieren.Übrigens kann die Gewohnheit, zufällige Teile der PHP-Logik in HTML oder Javascript einzubetten, zu ernsthaft verschlungenem Code führen. Ich spreche aus schmerzhafter Erfahrung.
quelle
In der Webanwendung wird jede Aufgabe auf eine Art von Anforderung und Antwort ausgeführt.
Die clientseitige Programmierung erfolgt mit HTML-Code mit Java-Skript und seinen Frameworks. Bibliotheken werden im Internet Explorer, in Mozilla und in Chrome-Browsern ausgeführt. Im Java-Szenario werden serverseitige Programmierservlets in den Servern Tomcat, Web-Logic, J Boss und WebSphere ausgeführt
quelle