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

JavaScript Discussion :

[AJAX] Comment gérer plusieurs requetes?


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 19
    Points
    19
    Par défaut [AJAX] Comment gérer plusieurs requetes?
    Bonjour,

    jai une page web avec une selection list de pays et plusieurs balise div avec des id pour les identifier. Suivant le pays selectionné, le contenu de ces div est rafraichis.

    Je souhaite utiliser Ajax pour rafraichir seulement le contenu des div et non toute ma page web.

    J'utilise POST comme request ou je passe une tableau associative de valeurs et jappelle une page aspx pour le traitement. Suivant les valeurs du tableau associative, une fonction appropriée est appelé dans le code csharp de la page aspx et le resultat en retour est du text (du code html).

    Voici mon pseudo code javascript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    TantQue settingsArray.length > 0 faire
      var assocArray[value] =  settingsArray[index];
       var request = new HTTPPOSTRequest(ASPXapplication_url, assocArray, handleResponse(DivId));
       request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       request.invoke();
     
    FinTantQue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    function handleResponse(DivID, response) 
    {
         var element = document.getElementById('refresh-elem-id-' + DivID);
         var responseText = response.responseText;
     
        if (response.type == OK)
        {
             element.innerHTML = responseText;
        }
    }
    Ma question est la suivante: je n'arrive pas a passer d'argument a ma fonction handleResponse() (jai une erreur javascript a lexecution), donc comment puis je faire en javascript dans ma fonction "handleResponse" pour savoir ensuite ou placer le response text dans ma page? En fait je dois trouver un moyen de passer l'id du div pour ensuite savoir ou placer le resultat dans la page.

    Merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Peut etre que mon message est peu clair d'ou pas de reponse jusquà present.

    Concretement pour peut etre etre plus comprehensif dans ce que je recherche à faire.

    Le pseudo code suivant fonctionne et le resultat correspond au resultat voulu, à savoir:

    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
     
    <script type="text/javascript" id="master-detail-portlet">
     
    	// Associative array of name.
    	var adminSettingsArray = new Array();
     
    	// Associative array portletID.
    	var portletIDsArray = new Array();
     
            // Just for testing. We get normally these values from elsewhere
    	portletIDsArray[0] = 1623;
    	portletIDsArray[1] = 1625;
    	portletIDsArray[2] = 1626;
     
           // Index
           var i = 0;
     
            // function which calls a server-side request URL (Asp.net application)
            function get_Content_$$PORTLET_ID$$()
    	{
                    // Requesting to get the content for the first div (id = 1623)
                   adminSettingsArray["ADMIN_PREFERENCES"] = ("some_values");
                 	var request = new PTHTTPPOSTRequest(gatewayedUrl, adminSettingsArray, handleResponse_1);
    		request.invoke();
     
                    // Requesting to get the content for the first div (id = 1625)
                   adminSettingsArray["ADMIN_PREFERENCES"] = ("some_values");
                 	var request = new PTHTTPPOSTRequest(gatewayedUrl, adminSettingsArray, handleResponse_2);
    		request.invoke();
     
                    // Requesting to get the content for the first div (id = 1626)
                   adminSettingsArray["ADMIN_PREFERENCES"] = ("some_values");
                 	var request = new PTHTTPPOSTRequest(gatewayedUrl, adminSettingsArray, handleResponse_3);
    		request.invoke();
            }
    et ensuite le wrapper pour afficher la reponse dans le div suivant le divid.

    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
     
    function handleResponse_1(response) 
    { 
           var element = document.getElementById('refresh-elem-id-1623');
     
            var responseText = response.responseText;
     
    	if (response.type == PTHTTPResponse.RESPONSE_TYPE_OK)
    	{
    		element.innerHTML = responseText;
    	}
    	else
            {
                   alert("errors");
            }
    }
     
    function handleResponse_2(response) 
    { 
           var element = document.getElementById('refresh-elem-id-1625');
     
           // then same as handleResponse_2(response) ...
    }
     
     
    function handleResponse_3(response) 
    { 
           var element = document.getElementById('refresh-elem-id-1626');
     
           // then same as handleResponse_1(response) ...
    }
    Comme dit plus haut, ce code fait ce que je souhaite obtenir au final. Cest a dire que j'appelle mon application dotnet en lui passant des paremetre avec POST et j'affiche le resultat dans un div suivant un divid. J'ai 3 objects XmlHttpRequest et 3 fonctions pour recupérer la reponse car j'ai 3 div à remplir.

    Le probleme de ce code, c'est qu'il ne peut pas etre utiliser pour un nombre aleatoire de balise div à rafraichir (ou plutot pour un nombre aleatoire de portlet sur la page puisque je travaille sur un portal). Donc comment rendre globalement le code Ajax générique pour quil soit utilisable quelque soit le nombre de requete à envoyer au serveur?

    Cordialement

Discussions similaires

  1. [Croisement des données] Comment gérer plusieurs BDD ?
    Par candice9 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 09/04/2006, 22h32
  2. [VB.NET]Comment gérer plusieurs boutons en 1 méthode Click ?
    Par Cydreav dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/02/2006, 23h53
  3. Comment gérer plusieurs langues ?
    Par InterSQL dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/02/2004, 16h12
  4. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49

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