Problème avec AJAX
Bonjour,
J'essaie de construire un truc simple, mais j'y arrive même pas... je comprend pu vraiment enfaîte. Je suis plenté là. Alors voilà, je dois valider un formulaire à partir d'un lien se trouvant dans une boîte qui s'affiche par dessus l'écran.
Page de base classique :
if($Count > 0)
{
echo '<form name="step2_form" onsubmit="new Ajax.Updater(\'Step_Frame\', \'./Librairies/AJAX/Upload/Step_3.php\', {asynchronous:true, parameters:Form.serialize(this)}); return false;" action="" method="POST"><strong>'.LANG_UPLOAD_STEP_2_CATEGORIE.' </strong><select name="categorie">';
echo '<option value="0"'.(($Assoc_Verif) ? '' : ' selected').'>'.LANG_UPLOAD_STEP_2_CHOOSE.'</option>';
while($Assoc = SQL_Assoc($Query))
{
echo '<option id="cur_cat" onclick="document.getElementById(\'step2_submit_id\').type=\'submit\'; return false" value="'.$Assoc['ID'].'"'.($Assoc_Verif ? (($Assoc_Verif['Categorie']==$Assoc['ID']) ? ' selected' : '') : '').'>'.htmlentities($Assoc['Nom']).'</option>';
}
echo '</select><br /><br /><input type="hidden" onclick="displayMessage(\'/Alertes/Upload_Confirm_Categorie.php\');return false" name="step2_submit_name" id="step2_submit_id" value="'.LANG_UPLOAD_STEP_2_NEXT_STEP.'" /></form>';
}
Page de confirmation (Upload_Confirm_Categorie.php) :
<div id="box6" class="bg7">
<div class="title">
<h2 class="text2 bg8">Choisir une catégorie</h2>
</div>
<div class="content">
<p>Étes-vous certain de vouloir utiliser cette catégorie ?</p>
<p><a href="#" onclick="document.getElementById('step2_submit_id').value='Chargement en cours ...'; document.getElementById('step2_submit_id').disabled='disabled'; document.step2_form.submit(); closeMessage(); return false">Oui</a> - <a href="#" onclick="closeMessage();return false;">Non</a></p>
</div>
</div>
Le document.step2_form.submit(); sur la seconde page ne fonctionne pas , le formulaire se voit renvoyé à la page de base (Step_1.php) au lieu de Step_3.php (la page de base est Step_2.php appelé en ajax dans une page appelé Upload.php (qui elle appele par défaut Step_1.php
Mercià tous ceux qui laisseront de l'aide ici !
J'essaie de construire un truc simple, mais j'y arrive même pas... je comprend pu vraiment enfaîte. Je suis plenté là. Alors voilà, je dois valider un formulaire à partir d'un lien se trouvant dans une boîte qui s'affiche par dessus l'écran.
Page de base classique :
if($Count > 0)
{
echo '<form name="step2_form" onsubmit="new Ajax.Updater(\'Step_Frame\', \'./Librairies/AJAX/Upload/Step_3.php\', {asynchronous:true, parameters:Form.serialize(this)}); return false;" action="" method="POST"><strong>'.LANG_UPLOAD_STEP_2_CATEGORIE.' </strong><select name="categorie">';
echo '<option value="0"'.(($Assoc_Verif) ? '' : ' selected').'>'.LANG_UPLOAD_STEP_2_CHOOSE.'</option>';
while($Assoc = SQL_Assoc($Query))
{
echo '<option id="cur_cat" onclick="document.getElementById(\'step2_submit_id\').type=\'submit\'; return false" value="'.$Assoc['ID'].'"'.($Assoc_Verif ? (($Assoc_Verif['Categorie']==$Assoc['ID']) ? ' selected' : '') : '').'>'.htmlentities($Assoc['Nom']).'</option>';
}
echo '</select><br /><br /><input type="hidden" onclick="displayMessage(\'/Alertes/Upload_Confirm_Categorie.php\');return false" name="step2_submit_name" id="step2_submit_id" value="'.LANG_UPLOAD_STEP_2_NEXT_STEP.'" /></form>';
}
Page de confirmation (Upload_Confirm_Categorie.php) :
<div id="box6" class="bg7">
<div class="title">
<h2 class="text2 bg8">Choisir une catégorie</h2>
</div>
<div class="content">
<p>Étes-vous certain de vouloir utiliser cette catégorie ?</p>
<p><a href="#" onclick="document.getElementById('step2_submit_id').value='Chargement en cours ...'; document.getElementById('step2_submit_id').disabled='disabled'; document.step2_form.submit(); closeMessage(); return false">Oui</a> - <a href="#" onclick="closeMessage();return false;">Non</a></p>
</div>
</div>
Le document.step2_form.submit(); sur la seconde page ne fonctionne pas , le formulaire se voit renvoyé à la page de base (Step_1.php) au lieu de Step_3.php (la page de base est Step_2.php appelé en ajax dans une page appelé Upload.php (qui elle appele par défaut Step_1.php
Mercià tous ceux qui laisseront de l'aide ici !
Configuration: Windows Vista Firefox 3.0.11
3 réponses
-
Désolé pour le post plus haut, pour les cods voilà :
Page de base (Step_2.php) inclut via AJAX dans Upload.phpif($Count > 0) { echo '<form name="step2_form" onsubmit="new Ajax.Updater(\'Step_Frame\', \'./Librairies/AJAX/Upload/Step_3.php\', {asynchronous:true, parameters:Form.serialize(this)}); return false;" action="" method="POST"><strong>'.LANG_UPLOAD_STEP_2_CATEGORIE.' </strong><select name="categorie">'; echo '<option value="0"'.(($Assoc_Verif) ? '' : ' selected').'>'.LANG_UPLOAD_STEP_2_CHOOSE.'</option>'; while($Assoc = SQL_Assoc($Query)) { echo '<option id="cur_cat" onclick="document.getElementById(\'step2_submit_id\').type=\'submit\'; return false" value="'.$Assoc['ID'].'"'.($Assoc_Verif ? (($Assoc_Verif['Categorie']==$Assoc['ID']) ? ' selected' : '') : '').'>'.htmlentities($Assoc['Nom']).'</option>'; } echo '</select><br /><br /><input type="hidden" onclick="displayMessage(\'/Alertes/Upload_Confirm_Categorie.php\');return false" name="step2_submit_name" id="step2_submit_id" value="'.LANG_UPLOAD_STEP_2_NEXT_STEP.'" /></form>'; } else { echo LANG_UPLOAD_STEP_2_NONE; }
La page Upload_Confirm_Categorie.php appelé dans la petite boite :<div id="box6" class="bg7"> <div class="title"> <h2 class="text2 bg8">Choisir une catégorie</h2> </div> <div class="content"> <p>Étes-vous certain de vouloir utiliser cette catégorie ?</p> <p><a href="#" onclick="document.getElementById('step2_submit_id').value='Chargement en cours ...'; document.getElementById('step2_submit_id').disabled='disabled'; document.step2_form.submit(); closeMessage(); return false">Oui</a> - <a href="#" onclick="closeMessage();return false;">Non</a></p> </div> </div>
La page Upload.php<?php require_once('./Librairies/Final.php'); Template_Render_Header(LANG_UPLOAD_PAG_TITLE); User_Status(); User_Online(); ?> <div id="box7"> <h2 class="text3 bg10"><?php echo LANG_UPLOAD_ADD_TITLE ?></h2> <?php $Query_Verif = SQL_Query('SELECT * FROM `cur_upload` WHERE `User_ID` = "'.$OUser['User_ID'].'" LIMIT 1') or SQL_Error(__FILE__,__LINE__); $Assoc_Verif = SQL_Assoc($Query_Verif); if($Assoc_Verif) { echo '<p><span style="color: red; font-weight:bold;">'.LANG_UPLOAD_WARNA.'</span> '.LANG_UPLOAD_WARNB.' <a href="#" onclick="displayMessage(\'/Alertes/Upload_Reset.html\');return false">'.LANG_UPLOAD_WARNC.'</a>'.LANG_UPLOAD_WARND.'</p>'; } ?> <div id="Step_Frame"> <?php echo LANG_AJAX_LOADING ?> </div> </div> <?php Template_Render_Footer(); ?>
Voilà merci ! -
Bon bah en 30 secondes j'ai découvert que le document.step2_form.submit(); renvoie vers la case Action et charge automatiquement Upload.php (car action = vide) ce qui est logique, mais document.step2_form.submit(); doit aller vers onsubmit :S Any ideas ?
-
LOL Vraiment dsl de spammer, mais j'ai trouvé la solution
Changer :
document.step2_form.submit();
par
document.step2_form.onsubmit();
car submit lance automatiquement action, mais onsubmit est onsubmit évidemment :)
voila :)