Pour organiser une communication interactive entre un visiteur et un site Web (ou plutôt un navigateur avec un serveur Web), le programmeur doit fournir des scénarios d'échange de données entre eux. Considérons plusieurs options simples pour organiser le transfert de variables du script JavaScrip client vers le script PHP serveur et vice versa.
Il est nécessaire
Connaissance de base des langages PHP, JavaScript et HTML
Instructions
Étape 1
Au stade de la formation de la page, il n'est pas difficile de transférer une variable avec sa valeur d'un script php vers un script JavaScript. Le script PHP génère lui-même le code HTML de la page demandée, y compris les scripts qu'il contient. Cela signifie qu'il peut écrire toutes les variables dans le code JavaScript qui doivent être transmises avec leurs valeurs. Par exemple, ce script php passera au script client une variable nommée "serverTime" contenant l'heure actuelle du serveur au format HEURE: MINUTE:
<?php
$ JSvarName = 'serverTime';
$ JSvarValue = date ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("Et sur le serveur maintenant" + '. $ JSvarName.'); '
?>
Étape 2
La façon la plus simple de passer les noms et valeurs de variables dans le sens inverse (du script JS dans le navigateur du client au script PHP sur le serveur web) peut ressembler à ceci dans le code HTML de la page:
var maintenant = nouvelle date ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;
Ce script enverra au script test2.php le nom de la variable "clientTime" et sa valeur contenant l'heure courante de l'ordinateur au même format HEURE: MINUTE. Cette méthode de transfert de données est appelée "synchrone" - elle entraînera un rechargement immédiat de la page. Plus précisément, à la place de la page courante, le résultat du script test2.php sera chargé dans le navigateur. Le code de ce script php pourrait ressembler à ceci:
<?php
if ($ _ GET) echo 'Variable reçue'.clé ($ _ GET). '='. $ _ GET [clé ($ _ GET)];
?>
Vous pouvez combiner les trois parties du code considérées pour transmettre des variables du serveur au navigateur et les renvoyer dans un seul fichier php comme ceci:
<?php
if ($ _ GET) echo 'Variable reçue'.clé ($ _ GET). '='. $ _ GET [clé ($ _ GET)];
$ JSvarName = 'serverTime';
$ JSvarValue = date ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("Et sur le serveur maintenant" + '. $ JSvarName.'); '
?>
fonction sendData() {
var maintenant = nouvelle date ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;
renvoie faux;
}
Envoyer les données au serveur Dans ce script combiné (PHP + JavaScript), le code php va générer du code JavaScript en "passant" une variable nommée "serverTime" avec une valeur contenant l'heure actuelle du serveur. Lorsque la page est chargée dans le navigateur, le script JavaScript affichera un message avec cette heure. Ensuite l'utilisateur clique sur le lien "Envoyer les données au serveur" lancera la fonction sendData(), qui enverra une requête GET au serveur, en passant le nom de la variable ("clientTime") et sa valeur (heure client) au php scénario. Un script php, ayant lu le nom et la valeur d'une variable dans le tableau superglobal $ _GET, l'imprimera et recommencera l'intégralité du script décrit.
Étape 3
Tout ce qui est décrit ci-dessus met en œuvre le scénario de transfert de données "synchrone". L'implémentation de la méthode "asynchrone" d'échange de données entre les scripts client et serveur a son propre nom AJAX (Asynchronous Javascript and XML). Ce sujet mérite un article séparé.