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] Méthode open d'httpRequest silencieuse ?


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Par défaut [AJAX] Méthode open d'httpRequest silencieuse ?
    Bonsoir à tous,

    J'ai un petit soucis avec cette méthode, elle me parait bien silencieuse, je m'explique : Je fais tourner des html offline avec dedans du JS et de l'ajax qui va faire des requêtes sur un serveur, tout marche nickel, mais si jamais l'utilisateur n'a pas de connexion, ça explose.

    J'ai essayé de catcher la ligne mais ça passe tout le temps dedans, même quand il y a une connexion... et apparemment cette méthode de renvoie rien.

    Donc que puis-je faire si jamais l'utilisateur n'a pas de connexion ou a un soucis pour lui signaler gentillement sans que la moitié de l'univers s'écroule ?

    Merci beaucoup.

    La fonction en question (en entier tant qu'à faire) :

    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
    function sendRequest(params)
    {
    	var httpRequest = false;
     
    	if (window.XMLHttpRequest) {
    		httpRequest = new XMLHttpRequest();
    		if (httpRequest.overrideMimeType) {
    			httpRequest.overrideMimeType('text/xml');
    		}
    	}
    	else if (window.ActiveXObject) {
    		try {
    			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e) {
    			try {
    				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			catch (e) {}
    		}
    	}
     
    	if (!httpRequest) {
    		alert('Abandon :( Impossible de créer une instance XMLHTTP');
    		return false;
    	}
    	httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
     
    	httpRequest.open('GET', 'http://mon-url.com/' + params, true);
    //		document.getElementById('errorMessage').innerHTML = 'Check your connection !';
     
    	httpRequest.send(null);
     
    	return true;
    }

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Comme ça de prime abord, il semble que tu ne traites pas les événements générés par AJAX lors de l'envoi de la requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
    Tu peux traiter httpRequest.status qui renvoie le code Server de la requete HTTP (200, 404, ...) . Si il est nul ou en dehors des plages habituelles c'est que tu serais en erreur. A tester.

    ERE

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Par défaut
    Hum, mais le problème c'est que ça ne fonctionne pas sur le open, pourtant la méthode n'envoie rien ?!

    J'ai fais ça mais bon si ya aucune connexion d'ouverte ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (httpRequest.status == '200')
    	{
    		httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
    		document.getElementById('errorMessage').innerHTML = httpRequest.status;
    		httpRequest.open('GET', 'http://mon-url.com/' + params, true);
    		httpRequest.send(null);
    	}
    	else
    	{
    		document.getElementById('errorMessage').innerHTML = 'Check your connection !';
    		return false;
    	}

  4. #4
    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
    Par défaut
    Salut,
    Les methodes "open" et "send" doit être en dehors de la fonction appelé par onreadystatechange. Le test du status doit être dans la fonction du onreadystatechange. Tu récupères ensuite le résultat du requête avec httpRequest.responseText ou httpRequest.responseXML.
    Tu trouveras les détails ici:
    http://siddh.developpez.com/articles/ajax/

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Par défaut
    Pour le send et le open c'est déjà le cas, j'ai viré le status aussi. Mais je ne vois pas comment faire s'il n'y a pas de connexion, ou plus généralement, catcher les problèmes qu'il pourrait y avoir.

    Une idée ? Merci.

  6. #6
    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
    Par défaut
    Salut,
    Pour le send et le open c'est déjà le cas, j'ai viré le status aussi
    On peut voir?
    Tu peux gérer les problèmes qu'il pourrait y avoir avec la valeur de httpRequest.status.
    Tu trouveras plus de détails ici:
    http://mathieu-lemoine.developpez.co...reponse#LIII-A.

Discussions similaires

  1. [AJAX] Permission refusée d'utiliser la méthode open
    Par DaSoul dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/11/2006, 06h34
  2. [AJAX] Méthode jamais appelée sous IE
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/09/2006, 15h19
  3. [AJAX] Concaténer 2 objets HttpRequest
    Par Braz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/06/2006, 13h45
  4. méthode Open : temps de réponse
    Par olivierlsf dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/11/2005, 14h32
  5. [ADO] Méthode open échoue
    Par Odulo dans le forum Access
    Réponses: 3
    Dernier message: 03/10/2005, 08h24

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