[RESOLU] valeur postée vide avec ajax

Eléphant du PHP | 163 Messages

23 mars 2016, 02:01

Salut !

J'ai un p'tit souci de passage de données entre HTML, AJAX et PHP.

Quelqu'un a une idée ?

J'ai ma page index.php qui est comme ça :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test xhttp</title>
<script>
function ajaxme() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
     document.getElementById("sortie").innerHTML = xhttp.responseText;
    }
  };
  xhttp.open("POST", "uncoupdajax.php", true);
  xhttp.send();
</script>
</head>

<body>
<form id="form1" name="form1" action="index.php" method="POST">
<select id="unchoix" name="unchoix" onchange="ajaxme();">
         <option value="1">choix 1</option>
         <option value="2">choix 2</option>         
    </select>
</form>
<div id="sortie">avant</div>
</body>
</html>
et ma page uncoupdajax.php (chargé de faire un simple echo de $_POST["unchoix"] mais ça ne me renvoie rien :\

Où est mon erreur ? Si y'a une autre façon d'appeler je suis preneur également :P

do_ok

Mammouth du PHP | 2703 Messages

23 mars 2016, 02:13

à aucun moment, tu ne dis d'envoyer les données du formulaire dans ton appel ajax.
voir http://stackoverflow.com/questions/9713 ... ttprequest pour des moyens de le faire.

Eléphant du PHP | 163 Messages

23 mars 2016, 12:33

Salut,

Alors je comprends sans comprendre...

C'est la partie params qui me manquerait ?

Il faut redéclarer toutes les variables postées c'est bien ça ?
var unchoix= document.getElementById("unchoix").value;
var vars = "unchoix="+unchoix;
xhttp.send(vars);

C'est la meilleure façon de faire ou il y a mieux ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

23 mars 2016, 13:12

Effectivement dans ton code initial tu n'envoies aucune données donc c'est logique que ta page uncoupdajax.php n'en reçoive pas ;)
A noter que pour débuguer l'ajax, il est important d'utiliser la console de développement son navigateur (Ctrl+maj+i sous Firefox ou Chrome) puis onglet réseau.
ça va te permettre de voir les requêtes envoyé en ajax ainsi que les paramètres qui sont envoyés
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 163 Messages

23 mars 2016, 13:23

Merci du conseil @rthur.
C'est l'utilisation standard d'ajax ? C'est pas has-been comme façon de faire ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

23 mars 2016, 13:31

L'essentiel c'est que ça marche non ?

Et non l'ajax n'est pas du tout has been.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 163 Messages

23 mars 2016, 13:41

ahah ^^
Non je ne parle pas de l'Ajax mais de l'objet xhttp.
Y'a pas plusieurs façons de faire de l'ajax ? Une façon plus récente j'entends ?

Mammouth du PHP | 2703 Messages

23 mars 2016, 14:57

ce que tu veux faire sera plus facile à coder avec jquery : http://api.jquery.com/jquery.post/

Eléphant du PHP | 163 Messages

23 mars 2016, 16:01

Merci à vous 2, ça roxxxe.

Dernière p'tite question et après je ferme le sujet en RESOLU ;)

Du coup avec une requête préparée ça se gère comment je veux dire la conformité de la saisie en admettant qu'il s'agisse d'un input text.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

23 mars 2016, 19:47

La conformité de la saisie fait la aussi via html5 et les masques sur les input.
Et pour le retour de conformité via ajax et bien il faut que tu gères les cas d'erreur que tu va renvoyer en ajax à ta page et ta page doit réagir pou indiquer qu'un pb a eu lieu
Quand tout le reste a échoué, lisez le mode d'emploi...