La question semble être courante, mais les réponses que je trouve sur le sujet ne semblent pas correspondre à ce que je cherche (ou sont fausses !). Je précise que je suis débutant en javaScript...
En simplifiant, ce que je voudrais faire, c'est juste récupérer une variable javaScript dans une variable PHP via un formulaire. Voici schématiquement à quoi ça devrait ressembler au niveau du code (à mon avis) :
<script>
var ma_var_js = 'valeur_test';
</script>
<form method="post" action="#">
<input type="hidden" id="ma_var" value=" ?methode?(ma_var_js)" />
<input type="submit" value="Récupérer ma variable" />
</form>
<?php
if(isset($_POST['ma_var'])){
echo('<br><br>Afficher la valeur de ma variable : <br>');
echo($_POST['ma_var']);
}
?>
Alors soit comment ça via une méthode PHP, soit inversement, une fonction javaScript qui permettrait directement d'envoyer une variable sur une page avec la méthode POST (ce qui est d'ailleurs plus probable en fin de compte plutôt que le code ci-dessus). L'objet XMLHttpRequest semble pouvoir faire ça, mais comment ??? C'est là ma seule piste, mais les exemples me perdent !
Bref, si vous avez des éclaircissements à me donner ou d'autres pistes accessibles, n'hésiter pas !
Merci :)
A voir également:
Affecter une variable javascript à une variable php
Oui, Ajax est bien la solution mais je n'arrivais pas comprendre comment dans mon cas... Merci quand même pour ton aide Zep3k!GnO.
Néanmoins depuis, j'ai réussi à programmer un petit code qui semble me donner les résultats que je veux. Le voici en simplifier (je me suis inspiré d'un tuto sur le site du zéro : http://www.siteduzero.com/tutoriel-3-557807-xmlhttprequest.html):
page_1.php :
<input type="submit" id="envoie" value="ENVOYER DONNEES" />
<p id="fileContent">
<span>Aucune données envoyées</span>
</p>
<script>
function send_data() {
var xhr = new XMLHttpRequest();
//Une variable javaScript :
var value = encodeURIComponent('Hello World');
xhr.open('GET', 'page_2.php?valeur=' + value);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById('fileContent').innerHTML = xhr.responseText;
} else if (xhr.readyState == 4 && xhr.status != 200) {
alert('Une erreur est survenue !\n\nCode :' + xhr.status + '\nTexte : ' + xhr.statusText);
}
}
xhr.send(null);
}
// Pour déclencher la fonction au clic sur le bouton d'envoi :
(function() {
var obj = document.getElementById("envoie");
obj.onclick = function() {
send_data();
};
})();
</script>