Comment ré afficher les données d'un formulaire ajax?

Eléphanteau du PHP | 10 Messages

04 sept. 2010, 10:32

Bonjour,

Le code ci-dessous permet d'afficher les données d'un formulaire sans recharger la page grâce à ajax (XMLHttpRequest) et je ne comprend pas comment ré afficher les données du second formulaire qui s'ouvre grâce à ajax lors de la validation si une erreur surgit ?

Soit un simple formulaire "index.php":

Code : Tout sélectionner

<form name="listes" action="#ancre" method="post"> <select name="region" onChange="javascript:getVilles()"> <option value="Choix_de_la_region" >«Choisissez la région»</option> <option value="Alsace" <?php if($region=='Alasace') {echo "selected='selected'";}?>>Alsace</option> <!--etc...--> </select> <!--Le formulaire ci dessous s'exécute grâce à l'ajax--> <span id="departements"> <select name="departement"> <option value="Choix_du_departement">«Choisissez le département»</option> </select> </span> <input name="envoyer" value="envoyer" type="submit"/> </form> <?php if (isset($_POST["envoyer"])) { $region = $_POST["region"]; $departement = $_POST["departement"]; echo ''.$region.'-'.$departement.''; } ?>
Ma liste de départements "liste-ajax.php":

Code : Tout sélectionner

$dpt = isset($_GET['dpt']) ? $_GET['dpt'] : false; $regions[Alsace] = array("Bas-Rhin","Haut-Rhin"); //etc... if($dpt != false) { echo '<select name="departement">'; for($i=0; $i<count($regions[$dpt]); $i++) { echo '<option value="'.$regions[$dpt][$i].'" '>'.$regions[$dpt][$i].'</option>'; } echo '</select>';
Le code ajax "ajax.js":

Code : Tout sélectionner

var requete = null; function creerRequete() { try { requete = new XMLHttpRequest(); } catch (microsoft) { try { requete = new ActiveXObject('Msxml2.XMLHTTP'); } catch(autremicrosoft) { try { requete = new ActiveXObject('Microsoft.XMLHTTP'); } catch(echec) { requete = null; } } } if(requete == null) { alert('Votre navigateur ne semble pas supporter les object XMLHttpRequest.'); } } function getVilles() { creerRequete(); var regions = document.forms['listes'].region; var dpt = ""; for (i = 0; i < regions.options.length; i++) { if (regions.options[i].selected) { dpt += regions.options[i].value; } } var url = 'liste-ajax.php?dpt='+dpt; requete.open('GET', url, true); requete.onreadystatechange = function() { if(requete.readyState == 4) { if(requete.status == 200) { document.getElementById('departements').innerHTML = requete.responseText; } } }; requete.send(null); }
J'ai testé plusieurs chose dans le fichier "liste-ajax.php" du style :

Code : Tout sélectionner

if($dpt != false) { echo '<select name="departement">'; for($i=0; $i<count($regions[$dpt]); $i++) { echo '<option value="'.$regions[$dpt][$i].'"'; if($regions[Alsace]=='Bas-Rhin'){echo "selected='selected'";} if($regions[Alsace]=='Haut-Rhin'){echo "selected='selected'";} echo '>'.$regions[$dpt][$i].'</option>'; } echo '</select>';


..mais rien n'y fait :(!
Peut on ré afficher les données du formulaire généré par ajax et si oui, comment ?
Merci