Bonjour à tous,

je coince sur un soucis jquery avec l'utilisation d'ajax.

Si vous connaissez l'ajax avec Jquery, vous connaissez ceci :

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
	$.ajax({
	  type: "POST",
	  url: "http://www.mon-site.com/ajax/file.php",
	  async: true,
	  data: "data1="+escape(data1)+"&"+"data2="+escape(data2),
	  cache: false,
	  success: function(msg){
		switch(msg)
		{
			case "1" : alert('ok'); break; // ok
			case "2" : alert('pas ok'); break; // pas ok
			default : alert(msg);
		}
	  }
	});
Vu que j'ai beaucoup de fonction ajax à mettre dans mon site, je trouve assez utile de créer une fonction "passe partout" pour appeler de l'ajax, plutot que de recopier cette tartine de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
function f_ajax(page,param){
	var v ="";
	for(keyVar in param) v += keyVar+'='+escape(param[keyVar])+'&';
	$.ajax({ type: "POST", url: "http://www.mon-site.com/ajax/"+page, async: true, data: param, cache: false,
	  success: function(msg){ return msg; } });
}
Cette dernière fonction me semble plus propre car moins de code à écrire et grâce à cette fonction, lorsque je dois faire de l'ajax il me suffit d'appeler ma fonction comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function MaFonction(data1, data2)
{
	var info = new Object();
	var msg = "";
	info['data1'] = data1; info['data2'] = data2;
	msg = f_ajax("file.php",info);
	
	switch(msg)
	{
			case "1" : alert('ok'); break; // ok
			case "2" : alert('pas ok'); break; // pas ok
			default : alert(msg);
	}
}
Le soucis est que c'est de l'asynchrone, et donc ma variable "msg" ne contient rien lorsque je veux faire mon dernier switch de la dernière fonction.

C'est assez compliqué à expliquer en faite, mais si j'arrive à faire de cette façon, je peux fameusement réduire mon temps codage et ma quantité de codage.

Merci