Je veux passer une chaîne javascript à php ... QUI se trouve juste après le code ... dans le script.
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
cela ne fonctionne pas. Que dois-je faire ?
Je veux passer une chaîne javascript à php ... QUI se trouve juste après le code ... dans le script.
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
cela ne fonctionne pas. Que dois-je faire ?
Lorsqu'une personne visite un site web, voici ce qui se passe généralement :
PHP et JavaScript sont donc à des étapes différentes du processus. Seul le serveur gère PHP, et seul le client gère JavaScript.
Pour "donner" une chaîne de caractères à PHP, il faudrait faire une requête à la page PHP, en envoyant cette chaîne comme variable GET :
http://www.yourdomain.com/some_php_page.php?myvar=mytext
Il y a plusieurs façons de le faire avec JavaScript.
Si vous ne vous souciez que de faire cette requête sur la page PHP, et que vous n'avez pas à vous soucier de recevoir des informations en retour, vous pouvez simplement créer une image et utiliser l'URL comme source :
var fakeImg = new Image();
fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext';
Même si vous demandez une image, le serveur ne le sait pas, et traitera votre demande en appelant le PHP qui l'évalue, etc.
Vous pouvez faire une vraie demande AJAX. Commencez par créer un objet XMLHttpRequest :
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
Il y a quelques problèmes dans IE avec les réponses en cache sur les requêtes AJAX, donc rendez l'url unique :
var url = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever';
Dites à votre XHR où vous voulez qu'il aille et comment vous voulez qu'il y aille :
xhr.open('GET', url, true);
// The "true" parameter tells it that we want this to be asynchronous
Mettez en place une méthode qui vérifiera si une réponse est reçue :
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status < 400) {
success(xhr.responseText);
}
};
Et enfin, envoyez la demande :
xhr.send(null);
// We set "null" because some browsers are pissy
Quelques notes à garder à l'esprit :
success
vous-même, pour gérer la chaîne de caractères que votre page PHP retournera.xhr.responseXML
si vous voulez, mais c'est généralement un problème pour moi.onreadystatechange
de la façon dont je l'ai fait va (je crois) introduire des fuites de mémoire dans certaines versions d'IE.Vous devriez comprendre la différence entre le code côté client et le code côté serveur. La variable que vous introduisez dans le code php n'est pas assignée avant parce que cette variable est définie chez le client. Votre exemple de code est donc faux par essence. Si vous voulez qu'une valeur qui est présente sur le client (javascript) soit disponible sur le serveur (php), vous devez faire quelque chose avec l'objet xmlhttprequest de javascript (également connu sous le nom d'ajax).
Vous pouvez cependant faire l'inverse... imprimer une valeur php en javascript. C'est parce que le script est créé côté serveur et envoyé au client avant d'être traité par le navigateur.
Je ne suis pas sûr de ce que vous essayez d'atteindre mais peut-être que ceci vous aidera un peu.
Votre exemple est quelque peu confus :
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
Parce que si je fais ça :
<script type="text/javascript">
<?php $myvar = "mytext"; ?>
var myvar = "<?php echo $myvar; ?>" ;
</script>
Ensuite, il définit la valeur JavaScript de myvar
à la valeur PHP de $myvar
pour que les deux restent les mêmes. Si vous essayez de faire quelque chose d'autre, vous devez développer votre exemple.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.