IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

fonction ajax avec return


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut 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 : 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

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Les transactions sont asynchrones par défaut, vous pouvez toujours modifier le réglage, mais alors l'utilisateur devra faire preuve de patience à chaque transaction.

    Voir : http://api.jquery.com/jQuery.ajax/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Par défaut
    Il faut passer ta fonction en argument de fonction et ensuite la lancer avec call.

    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
    19
    20
    21
    22
    
    f_ajax(MaFonction,page,param);
    
    
    function f_ajax(funct,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){ funct(msg).call(); } });
    }
    
    function MaFonction(msg)
    {
    	
    	switch(msg)
    	{
    			case "1" : alert('ok'); break; // ok
    			case "2" : alert('pas ok'); break; // pas ok
    			default : alert(msg);
    	}
    }

Discussions similaires

  1. [AJAX] return dans une fonction ajax avec async: false,
    Par murdok74 dans le forum jQuery
    Réponses: 0
    Dernier message: 29/05/2014, 14h42
  2. [AJAX] valider un formulaire avec une fonction ajax
    Par freums dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/02/2008, 11h34
  3. [AJAX] Ajax avec une fonction JS
    Par iwf-fr dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/09/2007, 19h25
  4. [AJAX] Envoi ou non d'un formulaire avec une fonction AJAX
    Par ohhh.gringo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2007, 11h47
  5. [AJAX] Creer une méthode ajax avec un return
    Par Khrysby dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/04/2007, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo