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] Retour Server trop rapide


Sujet :

AJAX

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 66
    Points : 46
    Points
    46
    Par défaut [AJAX] Retour Server trop rapide
    Bonjour à tous,

    Mon projet touche à sa fin et je rencontre un dernier problème (j'espère ) ,

    J'ai la fonction suivante :
    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
    // Send And Return Data from Server
    	function sendToServer(url, cfunc, meth, sendData)
    	{
    		if (window.XMLHttpRequest)
    		{
    			// code for IE7+, Firefox, Chrome, Opera, Safari
    			xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
     
    		}
    		else
    		{
    			// code for IE6, IE5
    			xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
    		}
    		xmlhttp.onreadystatechange=cfunc;
    		xmlhttp.open(meth,url,true);
    		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    		xmlhttp.send(sendData);
    	}
    et j'ai l'appel de fonction suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		sendToServer(file + "?" + strParam + options + "&randNum=" + new Date().getTime() , function()
    		{
    			if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && idTable != "")
    				{
    					document.getElementById(idTable).innerHTML = xmlhttp.responseText;
    			    }
    		}, methode, strParam);
    Or je me retrouve à faire deux appels de suite de la function SendToServer qui a pour conséquence d'écraser le xmlhttp. C'esr pourquoi seulement la seconde exécution est réalisée.

    Je cherche donc une méthode pour attendre la fin de la première exécution pour ensuite pouvoir faire un second appel à la fonction SendToServer.

    Merci pour votre aide .

    Bonne journée

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonjour,

    Il y a en fait 2 cas dans ta demande :
    1/ Ne pas écrase le XmlHttpRequest pour permettre des requetes AJAX en parallele
    2/ Pouvoir enchainer 2 requetes AJAX pour pouvoir déclencher une requete AJAX après le résultat de la première.

    Pour le point 1, il faut juste que la portée de ton objet xmlhttp soit celle de la fonction sendToServer et accessible dans ton callback. Je te propose donc (mes modifs en gras):
    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
    // Send And Return Data from Server
    function sendToServer(url, cfunc, meth, sendData)
    {
      var xmlhttp;
      if (window.XMLHttpRequest)
      {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
    
      }
      else
      {
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0"); 
      }
      xmlhttp.onreadystatechange=function(){cfunc(xmlhttp);};
      xmlhttp.open(meth,url,true);
      xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
      xmlhttp.send(sendData);
    }
    et pour l'appel (ma modif en gras)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sendToServer("uneurl" , function(xmlhttp) {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && idTable != "")
      {
        document.getElementById(idTable).innerHTML = xmlhttp.responseText;
        xmlhttp=null;
      }
    }, methode, strParam);
    Quand à enchainer 2 requetes, il suffit de faire un appel à sendToServer dans le callback...

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir
    if (window.XMLHttpRequest)
    {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0");

    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (window.XMLHttpRequest)
    		{
    			// code for IE7+, Firefox, Chrome, Opera, Safari
    			xmlhttp=new XMLHttpRequest(); ; 
     
    		}
    A+.

Discussions similaires

  1. [Prototype] Retour Ajax.Request trop rapide ?
    Par zebulon90 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 15/04/2011, 11h13
  2. [C#][AJAX] control server
    Par ALCINA dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/10/2007, 20h51
  3. [VBA-E] Liaisons qui ne se mettent pas à jour (macro trop rapide?)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/11/2005, 09h36
  4. Horloge 2x trop rapide!
    Par rgy834 dans le forum Administration système
    Réponses: 6
    Dernier message: 24/10/2005, 21h08
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

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