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] AJAX - req.status == 200


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [AJAX] AJAX - req.status == 200
    salut,
    j'ai un petit souci que je ne m'explique pas, sans doute pourrez-vous m'aider .
    J'ai une page php (file_manager.php) dans laquelle se trouve une requete AJAX qui va vers un autre fichier php (get_folder_content.php) qui fait certaines actions en fonction des variables passées.
    ça fonctionne bien, sauf pour une qui se déroule en deux étapes :
    * Première action: je récupère via responseText un formulaire tout simple (pour entrer le nom d'un nouveau dossier), jusque là ça marche
    * Seconde action: je soumet le formulaire pour créer le dossier.
    mais c'est là le problème, if(req.status == 200) n'est jamais vérifié !

    Si j'affiche directement ma page get_folder_content.php directement avec les bonnes variables dans l'url, elle s'affiche correctement!

    voici ma fonction AJAX - pour reprendre un peu avec les tests que je me suis mis, quand new_folder == 2, test6 ne s'affiche jamais...

    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 getFolderContent(f_id,new_folder){
            var req = null;
            if(window.XMLHttpRequest) //firefox
                req = new XMLHttpRequest();
            else if (window.ActiveXObject) {//IE
                try {
                    req = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                }
            }
            req.onreadystatechange = function(){
                if(req.readyState == 4)
                {
                    alert('test5')
                    if(req.status == 200)
                    {
                        alert('test6')
                        document.getElementById("folder_content").innerHTML= req.responseText;
                    }
                    else
                    {
                        alert("error")
                    }
                }
            };
            // GET THE CONTENT OF ONE SELECTED FOLDER
            if (f_id != ''){
            req.open("GET", "../functions/get_folder_content.php?folder_id=" + f_id);
            req.send(null);
            }
     
            //DISPLAY THE FORM TO CREATE A NEW FOLDER
            if (new_folder != ''){
                if (new_folder == 2){
                    new_name = document.forms["new_folder_form"].elements[0].value
                    alert(new_name + new_folder)
                    req.open("GET", "../functions/get_folder_content.php?new_folder=" + new_folder + "&new_folder_name=" + new_name);
                }
                else {
                    req.open("GET", "../functions/get_folder_content.php?new_folder=" + new_folder);
                }
            req.send(null);
            }
            return false
        }
    voici le contenu de ma page get_folder_content.php (je ne met pas tout)
    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
     
    if (isset($_GET['folder_id'])){
    ...
    }
    elseif (isset($_GET['new_folder'])){
        if ($_GET['new_folder'] == 1){
            echo '<tr><td align="center">
            Please enter here the name of your new folder<br>
                    <form name="new_folder_form" onsubmit="getFolderContent(\'\',\'2\')">
                    <input type="text" name="new_folder_name">
                    <input type="submit" value="create">
                    </form>
            </td></tr>';
        }
        elseif ($_GET['new_folder'] == 2 && !empty($_GET['new_folder_name'])){  
            $new_folder_name = $_GET['new_folder_name'];
            echo '<tr><td align="center">
            New folder '.$new_folder_name.' created, thanks !
            </td></tr>';
        }
    }
    Merci d'avance pour le ptit coup de pouce

    Julien

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !
    as-tu essayé de faire un alert de req.status pour voir la valeur qu'il avait ?

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    j'ai modifié comme ceci :
    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
    req.onreadystatechange = function(){
                alert(req.readyState)
                if(req.readyState == 4)
                {
                    alert(req.status)
                    if(req.status == 200)
                    {
                        alert('test6')
                        document.getElementById("folder_content").innerHTML= req.responseText;
                    }
                    else
                    {
                        alert("error")
                    }
                }
            };
    au premier appel, j'ai une serie d'alertes qui m'affichent ceci:
    1 - 1 - 2 - 3 - 4 - 200 - test6
    donc là ok

    au second appel, c'est different :
    1 - 1 - 4

    et ça s'arrête là, je saute la valeur 3 et pas de valeur retournée sur req.status !

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    C'est bizzard ca!

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    je dirai même plus: c'est bizarre

    si vous voulez tester par vous même (create a new folder):

    http://striweb.si.edu/databases/file_manager_project/manager/new.php

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    On ne peut pas y acceder, not logged.

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ah oui...
    bon bah là c'est bon...

  8. #8
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben chez moi j'ai toujours 1 - 1 - 2 - 3 - 4 - 200 - test6.
    Tu utilise IE ou FF?
    Moi IE 7

  9. #9
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    j'utilise FF.
    Je viens d'essayer sous IE 6 et effectivement j'ai bien la serie complète !

    j'ai remplacé test6 par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(req.responseText)
    Sous IE, je trouve bien mon généré par ma page get_folder_content.php mais qui ne s'affiche pas !
    Sous FF, toujours pareil, rien de s'affiche !

  10. #10
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Regarde ici c'est une page sur mon site,ma methode marche sur tous les navigateur peut etre ca te sera utile:
    http://www.benjy.goldzoneweb.info/ajax/

  11. #11
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    dans les tutos que j'ai vus, la plupart, du temps, le test était fait en un coup...

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

  12. #12
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    j'ai essayé mais ça ne change rien.

    je viens de voir qu'une de mes deux variables était passée dans l'url

    http://striweb.si.edu/databases/file...r_name=qsdfqs#

    est ce bien nromal ?
    pourquoi une seule des deux?

  13. #13
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ca doit pas etre grand chose car ca marche sur IE. Un probleme de compatibilite dans doute.

  14. #14
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Ne teste plus le status...

    Il semble qu'il y aie souvent des pbs avec celui-ci et dans 90% des cas, c'est sans raisons.

    if (xhr.readyState == 4) suffit amplement (ensuite tu vérrifie que ton responseText != null et c'est ok)

  15. #15
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    a vrai dire, ça ne marche pas vraiment sous IE parce que j'ai bien mon code retourné qui s'affiche dans mon alerte mais pas dans mon <div> !
    Evidemment, j'ai pensé immédiatement que mon innerHTML n'était pas correcte, mais bon il marche pour les autres requêtes !

  16. #16
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    effectivement en retirant le test sur le status ça fonctionne sous IE mais toujours pas sous FF...
    donc problème de compatibilité !

  17. #17
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Moi dans mon AJAX je test le status et ca marche parfaitement sous tous les navigateurs!!

  18. #18
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    C'est une question de serveur PHP/ASP/ASP .Net de types ou de versions différentes...

  19. #19
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    bon j'ai remarqué un truc qui pourrait fournir un début d'explication :

    quand je valide mon formulaire (qui appelle la fonction ajax) je remarque que la page se recharge. C'est ça qui fait que mon alerte affiche le code mais que ma page reste blanche. En fait, je pense que le code s'insère correctement mais que la page étant tout de suite rechargée, elle devient blanche...

    je vais essayer de voir ce qui fait que la page se recharge.

    julien

  20. #20
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    bon voilà, j'ai remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="new_folder_form" onsubmit="getFolderContent(\'\',\'2\')">
                    <input type="text" name="new_folder_name">
                    <input type="submit" value="create">
                    </form>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="new_folder_form">
                    <input type="text" name="new_folder_name">
                    <input type="button" value="create" onclick="getFolderContent(\'\',\'2\')">
                    </form>
    et ça marche, sauf un souci de mise en page sous IE

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

Discussions similaires

  1. $.ajax() récupérer le status code
    Par WalidNat dans le forum jQuery
    Réponses: 1
    Dernier message: 15/01/2012, 20h18
  2. ajax est xhr.status=0
    Par sebxid dans le forum jQuery
    Réponses: 1
    Dernier message: 25/05/2011, 13h16
  3. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/12/2005, 20h09
  4. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  5. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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