fonction ajax avec return
Bonjour à tous,
je coince sur un soucis jquery avec l'utilisation d'ajax.
Si vous connaissez l'ajax avec Jquery, vous connaissez ceci :
Code:
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:
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:
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 :P