Votre code est divisé en deux parties entièrement distinctes, le côté serveur et le côté client .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Les deux parties communiquent via des requêtes et des réponses HTTP. PHP est exécuté sur le serveur et génère du code HTML et peut-être du code JavaScript qui est envoyé en réponse au client où le code HTML est interprété et le code JavaScript est exécuté. Une fois que PHP a terminé la sortie de la réponse, le script se termine et rien ne se passera sur le serveur jusqu'à ce qu'une nouvelle requête HTTP arrive.
L'exemple de code s'exécute comme ceci:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Étape 1, PHP exécute tout le code entre les <?php ?>
balises. Le résultat est le suivant:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
L' file_put_contents
appel n'a abouti à rien, il a juste écrit "+ foo +" dans un fichier. L' <?php echo 42; ?>
appel a abouti à la sortie "42", qui est maintenant à l'endroit où se trouvait ce code.
Ce code HTML / JavaScript résultant est maintenant envoyé au client, où il est évalué. L' alert
appel fonctionne, tandis que la foo
variable n'est utilisée nulle part.
Tout le code PHP est exécuté sur le serveur avant même que le client ne commence à exécuter le code JavaScript. Il n'y a plus de code PHP dans la réponse avec lequel JavaScript pourrait interagir.
Pour appeler du code PHP, le client devra envoyer une nouvelle requête HTTP au serveur. Cela peut se produire en utilisant l'une des trois méthodes possibles:
- Un lien, qui amène le navigateur à charger une nouvelle page.
- Une soumission de formulaire, qui soumet des données au serveur et charge une nouvelle page.
- Une requête AJAX , qui est une technique Javascript pour faire une requête HTTP régulière au serveur (comme 1. et 2. le fera), mais sans quitter la page courante.
Voici une question décrivant ces méthodes plus en détail
Vous pouvez également utiliser JavaScript pour que le navigateur ouvre une nouvelle page en utilisant window.location
ou soumettre un formulaire, en émulant les possibilités 1. et 2.
window.open
ou charger une page à l'aide d'un iframe.<form>
données et envoyée au serveur. Vous pouvez manipuler des formulaires en utilisant Javascript pour qu'ils contiennent des données différentes. Oui, ces données feront partie de la requête HTTP résultante si elles font correctement partie du formulaire lors de leur soumission; peu importe qu'il soit dans le code HTML d'origine ou ajouté par la suite via Javascript.Pour déterminer pourquoi le code PHP ne fonctionne pas dans le code JavaScript , nous devons comprendre ce que sont les langages côté client et côté serveur , et comment ils fonctionnent.
Langages côté serveur (PHP, etc.) : ils récupèrent les enregistrements des bases de données, maintiennent l'état sur la connexion HTTP sans état et font beaucoup de choses qui nécessitent une sécurité. Ils résident sur le serveur, ces programmes n'ont jamais leur code source exposé à l'utilisateur.
Ainsi, vous pouvez facilement voir que les langages côté serveur gèrent les requêtes HTTP et les traitent, et, comme @deceze l'a dit, PHP est exécuté sur le serveur et génère du code HTML, et peut-être du code JavaScript, qui est envoyé en réponse au client, où le HTML est interprété et JavaScript est exécuté.
D'un autre côté, les langages côté client (comme JavaScript) résident dans le navigateur et s'exécutent dans le navigateur. Les scripts côté client se réfèrent généralement à la classe de programmes informatiques sur le Web qui sont exécutés côté client, par le navigateur Web de l'utilisateur, au lieu du côté serveur .
JavaScript est visible pour l'utilisateur et peut être facilement modifié, donc pour des questions de sécurité, nous ne devons pas compter sur JavaScript.
Ainsi, lorsque vous effectuez une requête HTTP sur le serveur, le serveur lit d'abord attentivement le fichier PHP pour voir s'il y a des tâches à exécuter et envoie une réponse du côté client. Encore une fois, comme l'a dit @deceze, * Une fois que PHP a terminé la sortie de la réponse, le script se termine et rien ne se passera sur le serveur jusqu'à ce qu'une nouvelle requête HTTP arrive. *
Alors maintenant, que puis-je faire si j'ai besoin d'appeler PHP? Cela dépend de la façon dont vous devez le faire: soit en rechargeant la page, soit en utilisant un appel AJAX.
Bonne lecture:
la source
Votre Javascript s'exécutera sur le client, pas sur le serveur. Cela signifie que
foo
n'est pas évalué côté serveur et que sa valeur ne peut donc pas être écrite dans un fichier sur le serveur.La meilleure façon de penser à ce processus est comme si vous génériez un fichier texte dynamiquement. Le texte que vous générez ne devient du code exécutable qu'une fois que le navigateur l'a interprété. Seul ce que vous placez entre les
<?php
balises est évalué sur le serveur.Soit dit en passant, prendre l'habitude d'incorporer des éléments aléatoires de la logique PHP dans HTML ou Javascript peut conduire à un code très compliqué. Je parle d'une expérience douloureuse.
la source
Dans l'application Web, chaque tâche s'exécute d'une manière de demande et de réponse.
La programmation côté client est avec du code html avec un script Java et ses frameworks, les bibliothèques s'exécutent dans les navigateurs Internet Explorer, Mozilla, Chrome. Dans le scénario Java, les servlets de programmation côté serveur s'exécutent dans les serveurs Tomcat, Web-Logic, J Boss et WebSphere.
la source