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] [vos avis] fonction "générique" pour les requetes


Sujet :

JavaScript

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut [AJAX] [vos avis] fonction "générique" pour les requetes
    Salut,



    Je me sers relativement peu d'Ajax et je souhaiterais avoir vos avis quant à la qualité de cette fonction

    nb: elle est censée compléter une bibliothèque pour scripts XUL... donc je suis sur que le navigateur utilise Gecko, et donc inutile de tester pour se servir de msxml activex & cie

    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
     
    function send(url,data,method,sendXML,objectAsync) {
            var xhr = new XMLHttpRequest();
    	var res;
     
            if (sendXML)
            {
                    xhr.overrideMimeType("text/xml");
            }
     
    	if (objectAsync) {
    		xhr.onreadystatechange = function() {
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4 && xhr.status == 200){
            			if (sendXML) {
    			                res = xhr.responseXML;
    			        } else {
    			                res = xhr.responseText;
    			        }
    				objectAsync.do(res);
    			}
    		}
    	}
     
            if (method == "POST") {
                    xhr.open("POST",url,false);
                    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    xhr.send(data);
            } else {
                    if (data == "") {
                            xhr.open("GET",url,false);
                    } else {
                            xhr.open("GET",url+'?'+data,false);
                    }
                    xhr.send(null);
            }
     
    	if (objectAsync == null) {
    		if (sendXML) {
                    	res = xhr.responseXML;
    	        } else {
            	        res = xhr.responseText;
    	        }
    		return res;
    	}
    }

    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Le bug tracking est inexistant

    Si ça se passe bien on fait ça, et si ça se passe mal on a aucun moyen de le savoir...

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    peux-tu détailler un peu plus ?
    que suggères-tu à la place ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4 && xhr.status == 200){
            			if (sendXML) {
    			                res = xhr.responseXML;
    			        } else {
    			                res = xhr.responseText;
    			        }
    				objectAsync.do(res);
    			}
    Tu fais quelque chose si le serveur à répondu et que tu as tout reçu, mais tu peux avoir un problème de liaison pendant le chargement, ou un problème de liaison tout court, et la bonjour les dégats pour trouver "pourquoi ça ne marche pas"

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    tu suggères un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else {alert("problem "+xhr.readyState+" "+xhr.status)}
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    et si je propose une personnalisation du traitement de l'erreur ce ne sera pas trop lourd (je ne suis pas habitué à l'Ajax )

    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
    function send(url,data,method,sendXML,objectAsync) {
            var xhr = new XMLHttpRequest();
    	var res;
     
            if (sendXML)
            {
                    xhr.overrideMimeType("text/xml");
            }
     
    	if (objectAsync) {
    		xhr.onreadystatechange = function() {
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4 && xhr.status == 200){
            			if (sendXML) {
    			                res = xhr.responseXML;
    			        } else {
    			                res = xhr.responseText;
    			        }
    				objectAsync.do(res);
    			} else {
    				objectAsync.error(xhr);
    			}
    		}
    	}
     
            if (method == "POST") {
                    xhr.open("POST",url,false);
                    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    xhr.send(data);
            } else {
                    if (data == "") {
                            xhr.open("GET",url,false);
                    } else {
                            xhr.open("GET",url+'?'+data,false);
                    }
                    xhr.send(null);
            }
     
    	if (objectAsync == null) {
    		if (sendXML) {
                    	res = xhr.responseXML;
    	        } else {
            	        res = xhr.responseText;
    	        }
    		return res;
    	}
    }
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/09/2013, 11h59
  2. Fonction générique pour valider les champs d'un formulaire quelconque
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/01/2009, 01h34
  3. activer mod_proxy pour les requetes ajax
    Par xtaze dans le forum Apache
    Réponses: 1
    Dernier message: 17/05/2006, 17h45
  4. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59

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