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] resultat http.responsetext vide


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Par défaut [AJAX] resultat http.responsetext vide
    Bonjour,

    J'ai un soucis avec un appel de fonction.
    en fait, j'effectue une requête http.open sur un fichier .php pour récupérer le résultat et l'afficher dans une div.

    Malheureusement le résultat est vide (affichage de "Aucun resultat"), SAUF si je met par exemple alert('aa'); a la fin de la fonction, j'ai mon alerte et le résultat retourné.

    une idée ?

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function listDir(id,current,pop){
    if(pop == 1)
            var temp = x.pop();
    else x.push(current);
    GLOBAL_current = current;
    http.open('get', 'list.php?id=' + id);
    http.onreadystatechange = handleInfo_dir;
    http.send(null);
    //alert('aa');
    }

    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
     
    function handleInfo_dir(){
    if(http.readyState == 1){
     document.getElementById('dir_frame').innerHTML = 'Loading...';
    }
    if(http.readyState == 4){
     var response = http.responseText;
     if(response=="")
            document.getElementById('dir_frame').innerHTML = "Aucun resultat";
     else
            document.getElementById('dir_frame').innerHTML = response;
            var pop = x.pop();
            x.push(pop);
            document.getElementById('path').innerHTML = "<div onclick=\"javascript:listDir('" + pop + "','"+pop+"',1)\" style=\"cursor:pointer\"\"><img src=\"UpFolder_icon.gif\">..</div>";
            GLOBAL_current = pop;
    }
    }
    Merci !

  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,

    Etonnant. Peux tu t'assurer du retour de l'appel AJAX (via Firebug ou autre ) ?
    Et tu devrais en profiter pour modifier un peu ton code:
    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
    function handleInfo_dir(){
    if(http.readyState == 1){
     document.getElementById('dir_frame').innerHTML = 'Loading...';
    }
    else if (http.readyState == 4 && http.status==200){
     var response = http.responseText;
     if(response=="")
            document.getElementById('dir_frame').innerHTML = "Aucun resultat";
     else
            document.getElementById('dir_frame').innerHTML = response;
            var pop = x.pop();
            x.push(pop);
            document.getElementById('path').innerHTML = "<div onclick=\"javascript:listDir('" + pop + "','"+pop+"',1)\" style=\"cursor:pointer\"\"><img src=\"UpFolder_icon.gif\">..</div>";
            GLOBAL_current = pop;
    }
    }
    ERE

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Par défaut
    En ajoutant "http.status==200" la div reste à "Loading" et ne passe pas dans la condition.

    Je remarque que ça ne fonctionne pas seulement lorsque j'accède au site directement (clic sur index.php)

    J'ai un autre lien qui rappelle listDir(), lorsque je clic dessus, là ça fonctionne.

    Est-ce possible que ça soit parce-que d'autres appels de fonction ajax (onload etc.) sont sur cette page ?

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Par défaut
    Je viens de voir le soucis :

    Dans mon index.php j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript">
            window.onload = function(){initAutoComplete(document.getElementById('form-test'),
            document.getElementById('champ-texte'),document.getElementById('bouton-submit'))
            listDir(0);
            load();
            };
    listDir et load effectuent des requetes
    x.open
    x.onreadystatechange
    x.send

    Et les fonctions liées a onreadystatechange sont différentes

    Lorsque je ne met qu'un seul appel de fonction, ça fonctionne, s'il y a le deux, seule un appel fonction, l'autre reste dans l'etat "Loading"

  5. #5
    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
    listDir et load effectuent des requetes
    x.open
    x.onreadystatechange
    x.send
    Effectivement, mais alors tu utilises un seul objet pour deux requêtes AJAX simultanées Crée un objet par requête.

    ERE

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

Discussions similaires

  1. [AJAX] formatage de http.responseText
    Par lesafir dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 13/08/2007, 11h12
  2. [AJAX] Requetes HTTPS et ajax = erreur 400?
    Par bambou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2007, 16h59
  3. [débutant] http.responseText ?
    Par cyrill.gremaud dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/09/2006, 18h12
  4. [AJAX] Utilisation de responseText
    Par manaboko dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2006, 08h33
  5. Resultats de requetes vides et pourtant !!
    Par ahage4x4 dans le forum ASP
    Réponses: 2
    Dernier message: 19/05/2005, 15h30

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