Conflit entre ajax et chargement d'une nouvelle page
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 :
Code:
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
} |
Fonction que j'appelle par
Code:
<a href='autre_page.php?num=...' onClick='return save_page()' >autre page</a>
Le problème est que, si je termine la fonction par :
Code:
1 2 3 4 5 6 7
| function save_page(){
...
$.ajax({
...
}); // fin de $.ajax
return true;
} |
la sauvegarde ne s'exécute pas...
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 :
Code:
1 2 3 4 5 6 7 8
| function save_act(){
..
alert("ll");
$.ajax({
...
}); // fin de $.ajax
return true;
} |
l'alerte s'affiche, même avec 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
Code:
1 2 3 4
| ...
event.preventDefault();
...
$(this).unbind('submit').submit(); |
mais le comportement est exactement le même.
Désolé si cette question a déjà été traitée.
Merci pour toutes vos réponses.