Communication JS PHP : fonctionnement...

Résolu
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 19 févr. 2008 à 12:06
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 19 févr. 2008 à 22:13
Bonjour à tous,

C'est re moi et cette foie ci je m'attaque aux échanges de variables entre JS et PHP.
Pour un autodidacte débutant ce n'est pas simple mais j'ai trouvé bonnes pistes...

1) j'avais cru comprendre, au travers des sources étudiées que les scripts JS devaient
obligatoirement se situer dans la balise HEAD. Il semblerait que ce ne soit pas un impératif.
Quelqu'un pourrais me le confirmer

En effet j'ai trouvé ceci (et je soupçonne Bultez d'être derrière ces explications ) :

javascript et php, pas seulement 2 langages différents
javascript se déroule sur la machine client
php sur le serveur

php génére du html, javascript ... et l'envoie vers client
l'utilisateur voit une page htm, clique par exemple et l'action associé en javascript appelle php

============================
Transmettre des données de PHP vers Javascript
========
1°) Du PHP dans le Javascript
Exemple : afficher la date du serveur
<script language="Javascript">
document.write('date serveur ' + '<?php echo date("d/m/Y"); ?>');
</script>
========
2°) Du Javascript dans le PHP
le même exemple :
<?php
echo "<script language='Javascript'>";
echo "<!--\n";
echo "document.write('date serveur " . date("d/m/Y") . "');\n";
echo "// -->";
echo "</script>\n";
?>
============================
Javascript au PHP
nécessaire de recharger la page
========
1°) Méthode POST avec champs dans un formulaire
<form name="formulaire" action="page.php" method="POST">

...

</form>
en cliquant sur bouton "go" on enclanche "page.php"
qui pourra traiter $p1,$p2...
bien sur, ce formulaire peut être complètement caché,
envoyé par javascript ....
========
2°) Méthode GET avec paramètres dans l'URL
par exemple
location.href = location.href + "p1='valeur' " ;
rappelle la page en cours en y rajoutant " ?p1='valeur'
Ce que PHP récupère en utilisant : $_GET["p1"]
============================
sûr de ne pas être exhaustif, peut-être d'autres
possibilité.

Je me pause donc la question :

Est-il possible d'utiliser l'exemple
 
2°) Du Javascript dans le PHP
<?php
echo "<script language='Javascript'>";
echo "<!--\n";
echo "document.write('date serveur " . date("d/m/Y") . "');\n";
echo "// -->";
echo "</script>\n";
?>

n'importe où dans le corps d'une page php

Autodidact, je ne demande qu'à apprendre... Merci de votre aide

3 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 31
19 févr. 2008 à 12:50
>>je m'attaque aux échanges de variables entre JS et PHP.
    il n'y en a pas         ;o))

>>Pour un autodidacte débutant ce n'est pas simple
    je suis bien d'accord, j'ai eu du mal !
    tant qu'on n'a pas compris "comment ça se passait"

>>j'avais cru comprendre, au travers des sources étudiées que les scripts JS devaient
>>obligatoirement se situer dans la balise HEAD.
    pas du tout.
    par convention (?), pour plus de clarté (?)....
        généralement, on y met les function
    le html/javascript est interprété "bêtement" par les navigateurs,
       ligne après ligne, en séquance ( sauf les function )

>>En effet j'ai trouvé ceci (et je soupçonne Bultez d'être derrière ces explications )
    vil plagiat de ce que j'ai trouvé ailleurs !

>><?php
>>echo "<script language='Javascript'>";
>>echo "<!--\n";
>>echo "document.write('date serveur " . date("d/m/Y") . "');\n";
>>echo "// -->";
>>echo "</script>\n";
>>?>
>>n'importe où dans le corps d'une page php

    qu'est-ce que cela va faire ?
    le php va créer une page html avec
...
<script language='Javascript'>
<!--
document.write('date serveur le résultat de date du php");
// -->
</script>
...

    là où tu fais les echo et l'envoyer vers le client   point barre

    tout ce qui n'est pas entre <?php et ?>   est envoyé tel quel.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
19 févr. 2008 à 15:58
Oupss,

Dans un premier temps, il semble que je n’ai pas posté au bon endroit, toutes mes excuses !
Pas évident de savoir où poster quand on écrit une appli php qui intègre du JS et que c’est le JS qui pause problème.

En effet, et je l’ai bien précisé, les explications que j’ai posté précédemment, sont issues d’un autre site. Désolé pour cette infidélité, mais quand on cherche à apprendre et comprendre, toutes les informations sont bonnes à prendre.
Elles sont issues d’un post de 2004 posté par un certain Bul (d’où le fait que j’ai pensé à Bultez… J’espère n’avoir froissé personne !) Si j’ai posté ici, c’est tout simplement pour avoir un avis sur le contenu.
Sur CS je n’ai trouvé que des solutions passant par des url pour récupérer le contenue de variables php.

Je rédige au propre et en clair mon soucis et je poste un nouveau sujet.

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 févr. 2008 à 22:13
Hello,

quelques précisions :
- en effet, <script... /> ne se trouve pas forcément au sein d'un élément <head.../>. Il peut y être. Et en effet, je penser que cx'est surtout par soucis de clarté qu'on met généralement les scripts ici, plutôt que d'en trouver un peu partout, éparpillés dans le document html. Une autre raison plus ancestrale est sans doute que normalement, le contenu de l'élément <head> ne devrait pas être affiché par le navigateur (ça ne veut pas dire que c'était une obligation...), or, on ne veut pas voir son code de scripting affiché tel quel dans le navigateur, généralement ;-)

- concernat le point crucial, question d'ailleurs redondante, à savoir l'échange de "variables" entre php et js (et inversement), il faut surtout comprendre une chose : php s'exécute côté serveur et javascript côté navigateur. Le lire, c'est bien...mais le comprendre réellement, c'est mieux! Je vais schématiser largement: que se passe-til quand on tape (ou demande via un lien ou autre) une adresse dans son navigateur : celui-ci va interroger le serveur sur lequel se trouve cette page (je passe tout ce qui concerne les problématiques réseau hein). celui-ci analyse la demande et la traite en fonctipon de ce qu'il y a dans la page demande : là, on aura généralement du script serveur (php, ruby ou autre). Ce script est exécuté par le serveur, et génère une sortie (en général, du html...mais ça peut être aussi de l'image, du csv, ou n'importe quoi d'ailleurs!). Ensuite la page générée est renvoyée au navigateur qui, si il la comprendre, l'analyse à son tour et "l'exécute". C'est alors que de l'"éventuel javascript sera exécuté. Cela implique que php s'éxécute AVANT javascript. Et que donc...forcément, php ne peut pas avoir connaissance de javascript! C'est pour cela qu'envoyyer une variable javascript à php n'est pas si simple : javascript s'éxécutant après php, il ne peut pas lui passer de variable. Il faut donc retourner vers le serveur. Et ça, globalement, cela se fait via les méthodes GET ou POST, et donc via un lien ou un formulaire pour rester dans les cas communs.
Par contre, l'inverse est possible : si php s'exécute avant javascript, rien n'empêche javascript de comprendre une variable php. En fait, c'est plus pernicieux que ça : echo $var; va "afficher" le contenu de la variable php $var. Javascript ne comprend pas $var...et ne peut y accéder puisque php ne fait que renvoyer ujne sortie au navigateur. Et la sortie dans ce cas peut se faire ainsi : echo $var;
Donc ce que l'on peut très bien faire, en imaginant que $var = 5 :
<script type="text/javascript">
function addOne() {
    var jsVar = <?php echo $var; ?> + 1;
}
</script>
et la fonction aura une variable jsVar qui vaudra 6.

C'est un exemple débile hein...et pas très propre qui plus est. Mais j'espère que cela t'aidera un peu à comprendre les interactions entre php et js (ou tout autres langages serveurs vs langages clients).
0