Problème d'ajax dans un formulaire
caroeLavoie
Messages postés
2
Statut
Membre
-
[Dal] Messages postés 6373 Statut Contributeur -
[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>';
}
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>';
}
A voir également:
- Problème d'ajax dans un formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Récupérer compte hotmail sans formulaire - Forum Hotmail / Outlook.com
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
1 réponse
Salut caroeLavoie,
Tu dois mettre un id à ton select :
Ensuite, tu accèdes à la sélection avec
(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
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