[AJAX] Variable POST introuvable
Bonjour,
trois pages :
- main.php avec l'appel d'un fichier php (ci-dessous) pour y inclure du code
- getMetiers.php pour obtenier une liste de métiers
- traitement.php est le formulaire appelé par main.php pour traitement
main.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php
echo "<table width=100% class='SansBordures'>\n";
echo "<form name='traitement' method='post' action='./traitement.php' enctype='multipart/form-data'>\n";
echo "<tr><td></td>\n";
echo "<td align='Right'>Liste des métiers</td>\n";
echo "<td>\n";
echo "<div id='_metiers' style='display:inline'></div>\n";
echo "</td>\n";
echo "<td></td></tr>\n";
echo "<tr><td></td><td></td>\n";
echo "<td>".'<input tabindex=13 type="submit" style="WIDTH:100%;" value="Valider..." />'."</td>\n";
echo "<td></td></tr>\n";
echo "</form>\n"
echo "</table>\n"
?> |
... bla bla bla
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
| function getXhr ()
{
var xhr = null;
// Firefox et autres
if( window.XMLHttpRequest )
xhr = new XMLHttpRequest();
// Internet Explorer
else if( window.ActiveXObject )
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function updateMetiers ()
{
var xhr = getXhr();
xhr.onreadystatechange = function ()
{
if( xhr.readyState == 4 && xhr.status == 200 )
{
leselect = xhr.responseText;
document.getElementById('_metiers').innerHTML = leselect;
}
}
xhr.open("POST","getMetiers.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('sousProjet');
sousProjet = sel.options[sel.selectedIndex].value;
xhr.send("sousProjet="+sousProjet);
}
... bla bla bla |
getMetiers.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php
if( isset($_POST["sousProjet"]) )
{
$mesMetiers = $_SESSION["p_moi"]->ListeMetiersSociete(0);
if( count($mesMetiers) )
{
echo "<select id='metier_' name='metier_' style='WIDTH:100%;'>\n";
foreach( $mesMetiers as $mesMetier )
echo "<option value='$mesMetier[NIU]'>".$_SESSION["p_moi"]->EntiteesHtml($mesMetier["libelle"])."</option>\n";
echo "</select>\n";
}
}
?> |
traitement.php
Code:
1 2 3 4 5 6 7 8
| <?php
if( isset($_POST) )
{
... bla bla bla
MailTo("monmail@gmail.com", "-A-", "_POSTmetier_='".$_POST["metier_"]."' intval(metier_)='".intval($_POST["metier_"])."'", "");
... bla bla bla
}
?> |
Tout se passe normalement, dans la page main.php je voit bien les métiers s'afficher, j'ai émis un courriel dans le corps du fichier getMetiers.php pour tracer et j'y passe bien.
Lorsque je valide le formulaire main.php, je ne retrouve, dans le fichier traitement.php, pas la variable $_POST['metier_'] ($_POST['metier']='' elle est donc vide !!!)
C'est le cas pour deux variables mises à jours via un appel AJAX alors que toutes les autres variables $_POST (non AJAX) sont bien visibles dans le fichier traitement.php.
Une idée ?
Par avance merci.