[AJAX] Afficher des options en fonction d'un choix
Bonjour,
Voila mon problème :
J'ai une liste d'abonnement que l'on choisi avec un bouton radio. Et en fonction de l'abonnement choisi on affiche les informations de cet abonnement(Prix, durée ...).
Et je voudrais faire tout cela en AJAX et PHP sous le modèle mvc :
J'ai donc mon modèle avec dedans une fonction qui affiche un formulaire d'abonnement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| function afficheFormAbonnement()
{
$afficher = "";
$afficher.='
<form name="formAbo" action="index.php?page=abonnement&action=souscrire" method="POST" id="formAbo" onsubmit="formAbonnement();return false;">
<table border id="tabAbo">
<tr>
<td id="lignAbo">Abonnement 1 mois<input type="radio" id="proposition" name="proposition" value="1" onclick="infoAbo()" /></td>
</tr>
<tr>
<td id="lignAbo">Abonnement 3 mois<input type="radio" id="proposition" name="proposition" value="2" onclick="infoAbo()" /></td>
</tr>
<tr>
<td id="lignAbo">Abonnement 6 mois<input type="radio" id="proposition" name="proposition" value="3" onclick="infoAbo()" /></td>
</tr>
<tr>
<td id="lignAbo">Abonnement 9 mois<input type="radio" id="proposition" name="proposition" value="4" onclick="infoAbo()" /></td>
</tr>
<tr>
<td id="lignAbo">Abonnement 12 mois<input type="radio" id="proposition" name="proposition" value="5" onclick="infoAbo()" /></td>
</tr>
</table>
<div id="infoAbonnement" align = "right"><br>
<div id="detailAbo">
</div>
<div id="optionAbonnement" name="optionAbonnement">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</div>
</div>
<div id="moyenPaiement"><br>
Moyen de paiement : </br>
<table>
<tr>
<td><img src="images/CB.jpg" height="50" width="50" ALIGN="middle"></td>
<td><img src="images/paypal.jpg" height="50" width="50" ALIGN="middle"></td>
<td><img src="images/cheque.png" height="50" width="50" ALIGN="middle"></td>
</tr>
<tr>
<td><input type="radio" id="choix" name="choix" value="cartebleue"></td>
<td><input type="radio" id="choix" name="choix" value="paypal"></td>
<td><input type="radio" id="choix" name="choix" value="cheque"></td>
</tr>
</table>
</br>
<input type="button" value="Valider" onclick="formAbonnement()" name="formAbo"/>
</form>
</div></br></br>
';
return $afficher;
} |
Ma vue :
Code:
1 2 3 4 5
| <div id="abonnement"><br>
<h2 align="center">ABONNEMENT</h2>
<?php
echo $abonnement;
?> |
Mon contrôleur :
Code:
1 2 3 4 5 6 7 8
| <?php
require_once("modele/m_abonnement.php");
$abonnement = afficheFormAbonnement();
include_once("vue/v_abonnement.php");
<? |
Et ma fonction AJAX :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| function infoAbo()
{
var xhr = null;
if(window.XMLHttpRequest)
{ // Firefox et autres
xhr = new XMLHttpRequest();
}
else
{
if(window.ActiveXObject)
{// Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{// XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
var requete = "";
requete += "proposition="+document.getElementById('proposition');
if(document.forms["formAbo"].proposition[0].checked || document.forms["formAbo"].proposition[1].checked || document.forms["formAbo"]. proposition[2].checked || document.forms["formAbo"].proposition[3].checked || document.forms["formAbo"].proposition[4].checked)
{
if(document.forms["formAbo"].proposition[0].checked)
{
requete += "proposition="+document.forms["formAbo"].proposition[0].value;
}
else if(document.forms["formAbo"].proposition[1].checked)
{
requete += "proposition="+document.forms["formAbo"].proposition[1].value;
}
else if(document.forms["formAbo"].proposition[2].checked)
{
requete += "proposition="+document.forms["formAbo"].proposition[2].value;
}
else if(document.forms["formAbo"].proposition[3].checked)
{
requete += "proposition="+document.forms["formAbo"].proposition[3].value;
}
else if(document.forms["formAbo"].proposition[4].checked)
{
requete += "proposition="+document.forms["formAbo"].proposition[4].value;
}
else
{
alert("Erreur");
}
}
xhr.open( 'POST', 'modele/m_abonnement.php', true);
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
if(xhr.responseText != "")
{
document.getElementById('detailAbo').innerHTML = "Ok";
}
else
{
alert(xhr.responseText);
}
}
else
{
alert(xhr.status);
}
}
};
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(requete);
} |
Et ça ne fonctionne pas : je ne sais pas pourquoi ...
Et aussi comment récupérer le choix pour ensuite faire une requête SQL dans mon modèle pour récupérer les infos de l'abonnement
Merci à tous pour votre aide !
<config>Windows 7 / Safari 535.7</config>