Bonjour,
Schématiquement, je tente de sauvegarder les données d’un formulaire avant de changer de page, avec un lien ou autre.
J’ai donc écrit une fonction :
Fonction que j'appelle par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function save_page(){ var fd = new FormData(); fd.append('num',$("#num").val()); ... $.ajax({ url:'ajax_page_update.php', type:'post', data:fd, dataType:'json', contentType: false, processData: false, success:function(response){ if(response != ""){ if(response.res==1){ ... } } // fin de success }); // fin de $.ajax }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <a href='autre_page.php?num=...' onClick='return save_page()' >autre page</a>
Le problème est que, si je termine la fonction par :
la sauvegarde ne s'exécute pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function save_page(){ ... $.ajax({ ... }); // fin de $.ajax return true; }
Alors que si je mets return false; } la sauvegarde s'exécute correctement ; mais, évidemment, le lien ne s'exécute pas...
Si je place une alerte avant $.ajax :
l'alerte s'affiche, même avec return true;.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function save_act(){ .. alert("ll"); $.ajax({ ... }); // fin de $.ajax return true; }
Je pense donc qu'il y a conflit entre les deux opérations. La fonction ajax n'a pas le temps de s'exécuter avant le chargement de la nouvelle page.
J'ajoute que j'ai aussi essayé de remplacer le lien par un bouton submit dans un form, et d'utiliser
mais le comportement est exactement le même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... event.preventDefault(); ... $(this).unbind('submit').submit();
Désolé si cette question a déjà été traitée.
Merci pour toutes vos réponses.
Partager