Problème d'ajax dans un formulaire

caroeLavoie Messages postés 2 Statut Membre -  
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,

Je suis présentement en train de créer un cms dans lequel je peux faire la gestion des pages. Il y a deux type de page, soit le premier qui se situe dans le menu principale et le second qui est une sous-section du menu principale. Dans mon formulaire de création de page, l'administrateur peut cliquer sur la checkbox menu-secondaire, afin de faire afficher une liste déroulante du menu principale pour choisir dans quel section on veux ajouter la sous-section. Ce bloc s'affiche en ajax.

Mon problème est que je suis incapable d'aller chercher la valeur du choix fait dans la liste déroulante. De plus, le navigateur affiche correctement le bloc inséré en ajax, cependant, quand je fais click droit > code source de la page, dans mon div ou est affiche mon block en ajax, il n'y a rien....

Voici donc mon code :

<script>
/* function ajax */
var check = 0;
function Ajax(noSecondaire) {

if(check == 1)
{
document.getElementById("contenu_ajax").style.display="none";
check = 0;
}
else {
if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("contenu_ajax").style.display="block";
document.getElementById("contenu_ajax").innerHTML=xmlhttp.responseText;

}
}

xmlhttp.open("GET","ajax.php?secondaire="+noSecondaire,true);
xmlhttp.send();
check = 1;
}
}
</script>

<div class="grid_4">
<h2>Les propriétés de la page</h2>

<p class="champs">
<label for="secondaire">Menu secondaire</label><input name="secondaire" type="checkbox" onclick="Ajax('1');" />
</p>
<p class="erreur"></p>

<div id="contenu_ajax">

</div>


/* ********************** DANS LA PAGE "ajax.php" ****************** */

/* vérifie si $_GET actu existe */
if(isset($_GET['secondaire'])) {

$sec = $_GET['secondaire'];

$connect = connexion();
$requete4 = 'select * from page where menu_id != "" and sMenu_id = "";';
$resultat4 = mysql_query($requete4, $connect) or die("Une erreur est survenue : " . mysql_error());

echo'
<p class="champs">
<label for="menu_principale">Menu auquel il se rapporte</label>
<select name="menu_principale">';
while($ligne4 = mysql_fetch_array($resultat4))
{
$menu_principale=utf8_encode ($ligne4['menu_id']);
echo "
<option value='$menu_principale'>".utf8_encode ($ligne4['menu_nom'])."</option>
";

}
echo'</select>
</p>';

}

1 réponse

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut caroeLavoie,

Tu dois mettre un id à ton select :

<select id="menu_ppal" name="menu_principale">

Ensuite, tu accèdes à la sélection avec

x=document.getElementById("menu_ppal")   
choix=x.options[x.selectedIndex].text

(non testé)

Vois :
https://www.w3schools.com/jsref/dom_obj_select.asp
https://www.w3schools.com/jsref/coll_select_options.asp

Pour le source, c'est normal. Ce que le navigateur affiche est tiré du cache, et non pas du contenu du DOM


Dal
0