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] Requ�te serveur trop lente


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de _FaFa_
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Par d�faut [AJAX] Requ�te serveur trop lente
    Bonjour

    Je tente de cr�er une arborescence d'un syst�me UNIX ou Windows en javascript avec l'aide de la libraire YUI. Les diff�rents chemins et fichiers sont contenus dans une base de donn�es. Pour cela je fait recours � AJAX. L'arborescence est op�rationnel pour les r�pertoires, seulement j'essaye d'ajouter les fichiers qui correspondent � ces r�pertoires. Mon code est le suivant :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    	function extractUrlParams () 
    	{
    		// On récupère les paramètres passer par la méthode GET
    		// Tous les paramètres seront stockés et retournés via le tableau tabRetour
    		var tab = location.search.substring(1).split('&');
    		var tabRetour = [];
    		for (var i=0; i<tab.length; i++) 
    		{
    			var x = tab[ i ].split('=');
    			tabRetour[i]=x[1];
    		}
    		return tabRetour;
    	}
     
    	function createRequestObject()
    	{
        	var http;
       		if (window.XMLHttpRequest)
        	{ // Mozilla, Konqueror/Safari, IE7 ...
            	http = new XMLHttpRequest();
        	}
        	else if (window.ActiveXObject)
       		{ // Internet Explorer 6
            	http = new ActiveXObject("Microsoft.XMLHTTP");
        	}
        	return http;
    	} // createRequestObject()
     
    	function returnFiles(node)
    	{
    		// On extrait le nom du client de l'url
    		var clientName = extractUrlParams ();
    		// On créer l'objet XMLHTTPRequest
    		var http = createRequestObject();
    		// On ouvre la connexion avec le serveur
      		http.open('GET', './file.php?clientName=' + clientName[1] + '&path=/' + node.data + '/', true);
     		http.onreadystatechange = (function ()
        	{
         		if (http.readyState == 4 && http.status == 200)
    	    	{
    	    		// On récupère le données de la requête dans le tableau files
    	        	var files = validateJSON(http.responseText);
              		if (files !== false)
              		{
                		for (var i in files)
                		{
                			// On ajoute un noeud style HTML
                  			var tempHTML = new YAHOO.widget.HTMLNode(files[i].name, node, false, true);
                  			// On chande l'icône de ce noeud
    						tempHTML.contentStyle = "icon-doc";	
                		}
               		}
               	}
        	});	
      	http.send(null);
    	} // returnFiles()
    J'ai inclus la fonction qui extrait les param�tres de l'url ainsi que celle qui cr�er l'objet XMLHttpRequest.

    Lorsque je clique sur un noeud ( un r�pertoire ), il ouvre ce dernier mais n'affiche rien. A ce moment je referme ce r�pertoire puis d�s que je l'ouvre � nouveau il affiche correctement les fichiers. En ce qui concerne mes r�pertoires j'ai utilis� une requ�te asynchrone, et il affiche tout du premier coup. Je crois que la requ�te est trop longue et qu'il passe alors � la suite du code vu qu'il n'a pas fini de tout charger. Je voudrais savoir comment faire pour qu'il affiche tout du premier coup. J'ai essay� la requ�te synchrone, seulement il n'affiche rien ...

    Je vous remercie de votre attention,

    FaFa

  2. #2
    Membre confirm� Avatar de _FaFa_
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Par d�faut
    Bon j'ai trouv� la r�ponse. Il fallait se pencher un peu plus sur la requ�te synchrone.

    Le code suivant marche :

    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
    function returnFiles(node, nodeLabel)
    	{
    		// On extrait le nom du client de l'url
    		var clientName = extractUrlParams ();
    		// On créer l'objet XMLHTTPRequest
    		var http = createRequestObject();
    		// On ouvre la connexion avec le serveur
      		http.open('GET', './file.php?clientName=' + clientName[1] + '&path=' + nodeLabel, false);
      		http.send(null);
     		// On récupère le données de la requête dans le tableau files
    	        var files = validateJSON(http.responseText);
    	        if (files !== false)
                    {
            	        for (var i in files)
                            {
                	              // On ajoute un noeud style HTML
                	              var tempHTML = new YAHOO.widget.TextNode(files[i].name, node, false);
                	              // On chande l'icône de ce noeud
    			      tempHTML.labelStyle = "icon-doc";	
                            }
                     }
    	} // returnFiles()

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 16/07/2013, 15h07
  2. Requ�te SQL trop lente
    Par enavant1 dans le forum Langage SQL
    R�ponses: 8
    Dernier message: 29/06/2011, 20h01
  3. Requ�te BD trop lente => Arr�t du processus ASP.NET
    Par sk8world dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 14/04/2010, 15h25
  4. Requ�te trop lente, comment l'optimiser?
    Par getz85 dans le forum Langage SQL
    R�ponses: 19
    Dernier message: 29/01/2008, 13h40
  5. auto-killer une requ�te trop lente
    Par Nico57 dans le forum Oracle
    R�ponses: 5
    Dernier message: 05/12/2006, 18h04

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