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] Soucis avec xhr_object.status !


Sujet :

AJAX

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut [AJAX] Soucis avec xhr_object.status !
    J'essaie d'utiliser une fonction JavaScript/Ajax dans ma ptite appli mais j'ai un problème.
    J'ai réécris une version simplifiée pour voir si je n'avais pas fait une erreur mais même la ça ne fonctionne pas

    Voici mon code

    test.html
    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
    57
     
    <script type="text/javascript" language="javascript">
    function faire_ajax(url)
    	{
    	var xhr_object = false;
    	if (window.XMLHttpRequest)
    		{ // Mozilla, Safari,...
    		xhr_object = new XMLHttpRequest();
    		if (xhr_object.overrideMimeType)
    			{
    			xhr_object.overrideMimeType('text/xml'); // Voir la note ci-dessous à propos de cette ligne
    			} 
    		}
    	else if (window.ActiveXObject)
    		{ // IE
    		try 
    			{ 
    			xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
    			}
    		catch (e)
    			{
    			try { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); } 
    			catch (e) {} 
    			} 
    		}
    	if (!xhr_object)
    		{
    		alert('Abandon :( Impossible de créer une instance XMLHTTP');
    		return false;
    		}
     
    	xhr_object.onreadystatechange = function()
    		{
    		alertContents(xhr_object);
    		};
     
    	xhr_object.open('GET', url, true);
    	xhr_object.send(null); 
    	}
     
    function alertContents(xhr_object)
    	{
    	if (xhr_object.readyState == 4)
    		{
    		if (xhr_object.status == 200)
    			{
    			alert(xhr_object.responseText);
    			}
    		else
    			{ 
    			alert('Code erreur ' + xhr_object.status);
    			}
    		} 
    	}
    </script>
     
    <span style="cursor: pointer; text-decoration: underline" onclick="faire_ajax('fichier.html')"> Effectuer une requête </span>
    fichier.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html>
    	<body>
    		<h1>Ca marche !</h1>
    	</body>
    </html>
    Mon soucis est que le xhr_object n'est jamais dans le bon état et me renvoi toujours le code d'erreur et je ne vois pas pourquoi.

    Le code d'erreur renvoyé par Firefox est "0" et sous IE rien ne s'ouvre ...

    Si quelqu'un peut me donner un coups de patte ce serait sympa.

    Merci à tous

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    xhr_object fait partie du contexte de la fonction appelante, le callback en héritera donc, pas besoin de le passer en paramètre, essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr_object.onreadystatechange = alertContents;
    ...
    function alertContents(){...}
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    Je débute en AJax et je suis désolé mais je n'ai pas compris ce que tu me suggères de faire ...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par Bullit84 Voir le message
    je n'ai pas compris ce que tu me suggères de faire ...
    un simple copié/collé, en remplacement de ces même lignes dans ton code

    A+

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    J'ai modifié ce que tu m'as dit mais j'ai dut faire une connerie parce que ca ne marche toujours pas ...

    c'est sensé être comme ?

    test.html:
    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
     
    <script type="text/javascript" language="javascript">
    function faire_ajax(url)
    	{
    	var xhr_object = false;
    	if (window.XMLHttpRequest)
    		{ // Mozilla, Safari,...
    		xhr_object = new XMLHttpRequest();
    		if (xhr_object.overrideMimeType)
    			{
    			xhr_object.overrideMimeType('text/xml'); // Voir la note ci-dessous à propos de cette ligne
    			} 
    		}
    	else if (window.ActiveXObject)
    		{ // IE
    		try 
    			{ 
    			xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
    			}
    		catch (e)
    			{
    			try { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); } 
    			catch (e) {} 
    			} 
    		}
    	if (!xhr_object)
    		{
    		alert('Abandon :( Impossible de créer une instance XMLHTTP');
    		return false;
    		}
     
    	xhr_object.onreadystatechange = alertContents;
     
    	xhr_object.open('GET', url, true);
    	xhr_object.send(null); 
    	}
     
    function alertContents()
    	{
    	if (xhr_object.readyState == 4)
    		{
    		if (xhr_object.status == 200)
    			{
    			alert(xhr_object.responseText);
    			}
    		else
    			{ 
    			alert('Code erreur ' + xhr_object.status);
    			}
    		} 
    	}
    </script>
     
    <span style="cursor: pointer; text-decoration: underline" onclick="faire_ajax('fichier.html')"> Effectuer une requête </span>

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Oui, je pense que c'est ce qu'indiquait Bovino ...

    As-tu essayé d'enlever l'affichage du xhr_object.status dans le alert() ?
    (en ne gardant qu'un message "en dur")

    A+

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    Avec un document.write() ?

    Si oui ca ne change rien, quand je clique sur l'appel il ne se passe rien et le console d'erreur de firefox me renvoi "xhr_object is not defined"

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Heu ... non : sans document.wrtite()
    Juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('Code erreur KO');
    A+

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    Ca change rien ...

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Bullit84 Voir le message
    Ca change rien ...
    Si : ton code

    Tu as toujours le message "xhr_object is not defined" ?

    Sinon, pourquoi l'initialiser à false ?
    Déclare le simplement ...

    Sinon quand le serveur répond, tu vois le responseText dans l'alert() ?

    A+

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    Je vais laisser tomber ça devient trop compliqué pour moi

    Merci quand même

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Ben qu'est-ce que j'ai dit de si terrible ?

    Je te suggère juste Le message d'erreur c'est toi qui l'a signalé : l'as-tu toujours ?

    Et l'alert(xhr_object.responseText) il est dans ton code : as-tu déjà vue la réponse s'afficher ?

    Elle sont pas compliquées mes questions, si ?

    A+

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    Je n'ai plus le message d'erreur

    Pour xhr_object.responseText je n'ai pas vu la réponse s'afficher ...

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    et la console firefox me dis que xhr_object est pas défini

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Par défaut
    j'ai trouvé le soucis ...

    En fait le xhr_object était déclaré en locale pour la fonction "faire_ajax()", je l'ai initialisée en globale et ca fonctionne. J'ai bien le contenu de mon fichier qui s'affiche dans le "alert"

    Merci à toi

  16. #16
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    EDIT : OK.

    J'allais te le proposer, bien que ça ne semblait pas nécessaire

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2010, 07h56
  2. $.ajax soucis avec l'enchainement
    Par kokusho dans le forum jQuery
    Réponses: 2
    Dernier message: 10/06/2009, 12h05
  3. [AJAX] Souci avec HTTPRequest sous IE en SSL
    Par DjChat dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/03/2009, 11h21
  4. [AJAX] Soucis avec un site aspx contenant de l'ajax
    Par aj4xworld dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/11/2008, 12h26
  5. [AJAX] Soucis Avec Ajax et ie
    Par xyvrak dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/05/2008, 15h43

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