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

AJAX Discussion :

Ajax - Connexion asynchrone


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Ajax - Connexion asynchrone
    Bonjour,

    Je développe depuis quelques mois un site Web en utilisant Javascript et Ajax.

    Quand je veux interroger le Web Services pour afficher des données, j'ai toujours trois appels Ajax qui se suivent : la connexion au Web Service pour récupérer l'identifiant, l'appel à la procédure qui me retourne mes données et la déconnexion.

    Voici un extrait de ma syntaxe :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
            $.ajax({
                    type: "POST",
                    url: gw_url,
                    data: w_soap_cnx,
                    dataType: "xml",
                    async: true,
                    headers: {"SOAPAction": '""'},
                    contentType: "text/xml; charset=utf-8",
                    success: function(reponse)
                    {
                       // Je récupère mon ID
                       // J'appelle le WS pour exécuter ma requete
                       $.ajax({
                                     type: "POST",
                                     url: gw_url,
                                     data: w_soap_mes_donnees,
                                     dataType: "xml",
                                     async: true,
                                     headers: {"SOAPAction": '""'},
                                     contentType: "text/xml; charset=utf-8",
                                     success: function(reponse)
                                     {
                                       //Je récupère mes données
                                       //Je me déconnecte
                                         $.ajax({
                                                       type: "POST",
                                                       url: gw_url,
                                                       data: w_soap_mes_donnees,
                                                       dataType: "xml",
                                                       async: true,
                                                       headers: {"SOAPAction": '""'},
                                                       contentType: "text/xml; charset=utf-8",
                                                       success: function(reponse)
                                                       { 
                                                         //Je suis déconnecté
                                                       }
                                         });
                                     }
                            });
                    }      
           });

    Est-ce que mon imbrication est la meilleure façon de faire ?
    Est-ce que je n'ai pas une autre solution pour faire de l'asynchrone sans imbriquer de cette façon ? En sachant que chaque appel doit s'exécuter lorsque le précédent appel est terminé.

    J'ai un autre site Web en cours de développement, dans lequel on récupère beaucoup plus de données en passant par plusieurs procédures. J'ai donc parfois trois ou quatre appels entre ma connexion et ma déconnexion. Le code n'est plus très lisible, je trouve...

    Je vous remercie d'avance pour vos suggestions.

    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà vous pouvez essayer de factoriser le code dans une fonction comme ça par exemple :
    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
    function appelServeur(donnees, fonctionTraitement) {
     
        $.ajax({
            type: "POST",
            url: gw_url,
            data: donnees,
            dataType: "xml",
            async: true,
            headers: {"SOAPAction": '""'},
            contentType: "text/xml; charset=utf-8",
            success: fonctionTraitement,
        });
     
     
    }
    et en utilisant cette fonction, l'enchainement des appels sera déjà un peu plus clair
    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
    23
     
     
     
    appelServeur(w_soap_cnx, function (reponse) {
     
        // récupération de l'identifiant
     
     
        appelServeur(w_soap_mes_donnees, function (reponse) {
     
            // récupération des données
     
     
            appelServeur(w_soap_deconnexion, function (reponse) {
     
                // Je suis déconnecté
     
     
            });
     
        });
     
    });

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui, c'est une bonne idée. J'ai d'ailleurs commencé à faire ca hier. Merci.

    En parallèle, j'ai lu des articles sur les callback. Mais je ne vois pas trop comment ca peut se mettre en place, et si en plus ca serait une solution pour moi ...

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    en regardant ton code j'ai du mal à comprendre ce que tu cherches à faire.

    Tu envoies une requête
    ...à réception tu fais une autre requête à la même adresse en modifiant simplement les datas envoyées qui visiblement dépendent de la réponse...

    pourquoi ne pas faire qu'une requête et traiter cela coté serveur !?!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je ne peux pas faire un seul appel car pour interroger une méthode, il faut d'abord que le Web Services me retourne un numéro de jeton.
    C'est seulement avec ce numéro de jeton que je peux interroger une méthode qui va me retourner mes données.
    Et ensuite, je libère le jeton.

Discussions similaires

  1. Struts/Ajax: Submit asynchrone
    Par MedMek dans le forum Struts 1
    Réponses: 1
    Dernier message: 03/04/2008, 16h36
  2. [AJAX] ajax connexion entre deux serveurs
    Par dede6435 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/12/2007, 21h20
  3. [AJAX] Ajax requêtes asynchrones simultanées
    Par jiber2fr dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2007, 23h39
  4. [AJAX] Ajax pas asynchrone
    Par crazy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/03/2007, 18h45
  5. [C#] [Sockets] Eclaircissements pour connexions asynchrones
    Par Sinclair dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2004, 17h50

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