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] passage texte avec response.write


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut [AJAX] passage texte avec response.write
    Bonjour à tous,

    J'ai une page aspx où j'ai 1 fonctions 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
    addArticle(s) {
    document.getElementById("t").innerHTML="Load..."
                xmlhttp=new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                        document.getElementById("t").innerHTML=xmlhttp.responseText;
                        if (document.getElementById("t").innerHTML == "ok")
                        {
                            location.href(location.href);
                        }
                    }
                }
                xmlhttp.open("GET",s,true);
                xmlhttp.send();
                document.getElementById("t").innerHTML=s;
                }
    }
    j'appelle cette fonction à différents endroits dans cette page..

    je fais le traitement des données sur une autre page aspx et à la fin je renvoie "ok" via .

    Normalement, comme vous pouvez le voir dans mon code, si la reponse est "ok", je redirige la page.
    Or actuellement j'ai "ok" qui s'affiche sur ma page.
    Si je fais alert(xmlhttp.responseText) juste avant le if pour la redirection, il me renvoie tout ce qu'il y a dans la balise <head> et après "ok"..

    Pouvez-vous m'orienter sur mon erreur, sur ce qui m'a échappé, svp ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Je n'suis pas sur mais je crois que location s'utilise de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.location.href="ton_url"

    Est ce qu'il rentre dans le if quand tu renvoie ok?

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById("t").innerHTML=xmlhttp.responseText;
    if(xmlhttp.responseText =="ok"){
           document.location.href="ton_url"
    }

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci de ta réponse.

    location.href n'est pas un problème, il fonctionne bien. après, c'est vrai qu'il y a plusieurs façons de l'utiliser

    étant donné que xmlhttp.response ne me renvoie pas que "ok" mais des balises avec, non ça ne rentre pas dans le if :/ et c'est ça le problème, je ne vois pas pourquoi il me renvoie tout ce qu'il y a dans <head>

  4. #4
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    la méthode response renvoie le contenu de la page, c'est à dire les sources.
    Il est normal que s'il y a des balises, elle les récupères

    Si jamais tu récupères un texte en gras,
    Et que tu l'affiches dans une div,
    Il sera en gras parce qu'il recopiera les balises Oo

    Si tu ne veux pas de soucis,
    Fais en sorte que ta page que tu récupères ne contienne rien d'autre que ton texte.
    Tu te fiches qu'elle soit valide w3c ou bien compris par les navigateurs,
    Car elle ne te sert que à récupérer des valeurs.
    (même l'encodage n'est pas pris en compte, en AJAX il faut de l'UTF-8 je crois ^^)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci pour ta réponse.

    la page que je récupère est structurée comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <head id="Head1" runat="server"/>
    <% //traitements ....
    Response.write("ok")
    %>
    si j'enlève la balise head, ma fonction n'affiche que "load..." et donc la suite ne s'exécute pas correctement.
    et si j'enlève les <% %>, le code n'est bien sur pas interprété...

  6. #6
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    J'ai jamais fait d'Aspx donc je vois pas trop ^^
    Mais peut être que tu peux contourner le problème en insérant ton résultat dans une balise html tu pourrai alors le récupérer autre part:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <head id="Head1" runat="server"/>
    <% //traitements ....
    <span id='resultatMaPageASPX'>Response.write("ok")</span>
    %>
    et dans ta page qui l'appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var temp = document.getElementById("temp");
    temp.innerHTML = xmlhttp.responseText;
    if (temp.getElementById("resultatMaPageASPX").innerHTML == "ok")
      ...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    je viens de tester et le résultat est le même :/

  8. #8
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Arf,
    Et Response, il a quoi comme méthodes ?
    Je ne connais pas ASPX,
    Mais il y a peut-être des méthodes spécifiques
    Pour mettre du texte dans des balises ou autre ...

  9. #9
    Membre confirmé Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    getElementById n'est pas une méthode présente sur tout les éléments, mais un méthode de l'objet window.document !

    Donc la solution proposé aura plus de chance de fonctionner comme ceci :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var temp = document.getElementById("temp");
    temp.innerHTML = xmlhttp.responseText;
    if (temp.getElementsByTagName("span")[0].innerHTML == "ok") {
    ....
    }

    Sinon, le problème semble plus être un problème d'asp que de javascript...
    Si la page renvoie correctement l'information... pas de soucis sur le javascript !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci pour vos réponses.

    je ne vois pas trop à quoi pourrait correspondre "temp" du document.getElementById("temp") sachant que j'ai la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="div1">
    	<span id="t"></span>
    </div>
    et le code serait plutôt sans [0], non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (temp.getElementsByTagName("span").innerHTML == "ok")

  11. #11
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    getElementsByTagName(tagname)
    renvoie la liste des éléments du type (de balise) tagname
    donc nadox précise qu'il faut prendre le premier (et dans notre cas le seul)

    l'élément temp correspond à ton div1 ou ton t
    en gros, c'est l'élément où tu veux stocker ton résultat temporaire.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    en passant par cette variable temporaire, j'ai un message d'erreur au niveau du if avec le getElementsByTagName : impossible de récupérer ce qu'il y a dans le innerHTML, il est soit null ou indéfini...

  13. #13
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Juste une question,
    As tu testé le retour de ta page ASP ?
    En gros, as tu essayé d'afficher dans un alert le résultat de xmlhttp.responseText ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    oui, c'est une des premières choses que j'ai fait !

    je vous l'ai même dit.. je récupère "ok" en plus du contenu de la balise <head>.

    c'est bien ça le problème ! je voudrai récupérer uniquement "ok"..

  15. #15
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Oui d'accord,
    Mais est ce que tu vois bien la balise que t'essayes de récupérer ?

    Dans mon exemple c'était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id='resultatMaPageASPX'>ok</span>

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    je vois exactement ceci :
    <head>//tout ce qu'il y a dedans</head> ok

  17. #17
    Membre actif Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Points : 293
    Points
    293
    Par défaut
    Donc je suppose que la méthode Response.write() écrit du html ?

    et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.write("<span id='resultatMaPageASPX'>ok</span>")

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2011, 10h25
  2. Probleme avec response.write
    Par maxxou dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/09/2010, 16h56
  3. Réponses: 3
    Dernier message: 02/11/2009, 15h25
  4. Problème avec Response.write et <!DOCTYPE .. >
    Par Gunny dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/07/2008, 15h41
  5. Erreur avec response.write et <TABLE>
    Par angelevil dans le forum ASP
    Réponses: 4
    Dernier message: 11/03/2005, 14h48

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