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] Debuggage d'une fonction


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Par défaut [AJAX] Debuggage d'une fonction
    Bonjour,

    J'ai essayé de créer un formulaire et de faire en sorte que lorsqu'on écrit dans un champ, ce champ est analysé et le resultat de l'analyse apparait dans un span.
    Le problème c'est que ce que j'ai écris ne marche pas et je n'arrive pas à trouver l'erreur :s
    Dans la dernière fonction js, il y a 2 alert. Le premier alert passe mais pas le second.

    Sinon normalement dans le fichier PHP, il y a un lien vers la base de données afin d'analyser le resultat mais je l'ai supprimer histoire de simplifier le code.

    Donc avec ce code, j'aimerais avoir comme résultat:
    Lorsqu'on ecrit dans le champ, le span se rempli de "eeenone".
    "eee" se trouvant dans la derniere fonction js et none dans le fichier PHP.

    Quelqu'un aurait-il la solution à mon problème s'il vous plait?

    PS: J'ai executer le fichier PHP et il genere bien du XML.

    Code de la page HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <td class="tableau_td">
    <input onKeyUp="afficher();" type="text" id="legume" value="" size="2" />
    </td>
    <td class="tableau_td_der">
    <span id="etat_legume"></span>
    </td>


    Code JS:

    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
     
    function afficher()
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.onreadystatechange = function() { alert_guild(xhr); };
    	xhr.open("GET", "./approvisionnement/verifQuantite.php", true);
     
        xhr.send(null);
    }
     
     
     
    function alert_guild(xhr)
    {
    	var docXML= xhr.responseXML;
    	alert("TEST1");
    	var items = docXML.getElementsByTagName("res");
    	alert("TEST2");
    	var html  = 'eee';
     
    	html += items[0].getElementsByTagName("re")[0].firstChild.nodeValue;
     
    	document.getElementById('etat_legume').innerHTML = html;
     
    }

    Script PHP (verifQuantite.php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
     
    header('Content-Type: text/xml'); 
    echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
     
    echo "<root><res><re>none</re></res></root>";
     
    ?>

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    onreadystatechange est appelée plusieurs fois dans une requête ajax

    xhr.readyState prend pour valeur:

    0 non initialisé
    1 ouverture. La méthode open() a été appelée avec succès
    2 envoyé. La méthode send() a été appelée avec succès
    3 en train de recevoir. Des données sont en train d'être transférées, mais le transfert n'est pas terminé
    4 terminé. Les données sont chargées

    Donc tu essaye d'accèder à ton document avant qu'il ne soit prêt.

    Ajoute ce test dans ta fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (xhr.readyState==4 && xhr.status==200) {
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Par défaut
    Bonjour,

    Je te remercie d'avoir pris du temps pour essayer de résoudre mon problème.
    J'ai rajouté la fonction que tu m'a proposé (Je l'ai peut-être placé au mauvais endroit), et ça ne marche toujours pas. Maintenant c'est le TEST1 et le TEST2 qui ne passe pas :s

    Voici la modification effectuée:

    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
     
    function afficher()
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.onreadystatechange = function() 
    	{ 
    		if (xhr.readyState==4 && xhr.status==200) 
    		{
    			alert_guild(xhr); 
    		}
    	};
    	xhr.open("GET", "./approvisionnement/verifQuantite.php", true);
     
        xhr.send(null);
    }

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut

    Que te donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    xhr.onreadystatechange = function() 
    { 
      alert(xhr.readyState);
    };

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Par défaut
    J'ai une première alert avec écrit 1 puis une seconde avec 2 puis 3 puis 4 et pour finir 1.

    alert(xhr.status) me donne 404. Le problème viendrait donc de là?

  6. #6
    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
    Citation Envoyé par Freygolow Voir le message
    alert(xhr.status) me donne 404. Le problème viendrait donc de là?
    Oui, il y a de fortes chances
    Vérifie bien l'adresse de ta page appelée !
    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

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

Discussions similaires

  1. [AJAX] [DWR] sérialiser une fonction vers javascript
    Par archeboc dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/03/2008, 02h58
  2. [AJAX] Tester si une fonction existe
    Par Kosti dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/08/2007, 18h24
  3. [AJAX] Comment rajouter une fonction Javascript
    Par darkdrow dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/07/2007, 13h25
  4. [AJAX] Sortir d'une fonction
    Par zooffy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2007, 14h07
  5. Réponses: 3
    Dernier message: 17/08/2006, 14h43

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