Bonjour à tous,
je coince sur un soucis jquery avec l'utilisation d'ajax.
Si vous connaissez l'ajax avec Jquery, vous connaissez ceci :
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
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); } } });
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 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; } }); }
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.
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); } }
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![]()
Partager