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 : 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 
}
Fonction que j'appelle par
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 :
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;
}
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 : 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;
}
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.