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

jQuery Discussion :

La fonction .html() ne me renvoie pas ma balise <script>


Sujet :

jQuery

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut La fonction .html() ne me renvoie pas ma balise <script>
    Bonjour à tous,

    Je souhaiterai récupérer le contenu d'un DIV dans une page html, et ce DIV contient un Script Javascript, apparemment lorsque j'exécute le code suivant, je récupère tout mon code Html sauf mon Script.
    Cette fonction ne fonctionne plus depuis que j'utilise Jquery v1.4.2, ça fonctionnait avec la 1.3.
    Quelqu'un aurait-il une idée ?
    Merci d'avance pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    jQuery.ajax({
                        type: "Ajax",
                        url: monURL,
                        success: function(data) {
    	      // ici, je récupère dans ma page HTML, tout ce qui se trouve dans mon div [idDiv] dont un script 
                        var content = jQuery("#idDiv", data).html();
                        alert(content);
                        },
                        error: function(data) {
                            alert('Notification d'erreur!');
                        }
                    });

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 91
    Points : 130
    Points
    130
    Par défaut
    Hello cpetitjean,

    J'ai fais un test simple sans appel Ajax et la fonction html() fonctionne correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="id1">
    	<script type="text/javascript">var a = "a";</script>
    	<a href="javascript:alert($('#id1').html())">html()</a>
    </div>
    Il faudrait voir du côté de ton appel Ajax.

  3. #3
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Ce n'était peut-être que pour l'exemple, mais dans ton extrait il y a une erreur de quotes dans l'alert de ta callback error :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('Notification d\'erreur!');

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci à vous 2 pour votre aide.
    Pour répondre à l'histoire des quotes dans l'alert, effectivement c'était juste pour l'exemple. Mon alert fonctionne.
    Merci aussi sedryk d'avoir tester, c'est vrai que le code inclus dans la même page fonctionne bien, mais en fait dans mon exemple (désolé, je ne l'avais pas bien spécifié), je récupère un morceau de code d'une autre page.
    Je vous donne le code de mes 2 pages :

    Page : [PageA.htm]
    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
     
    <html>
      <head>
            <script type="text/javascript" src="../jquery.js"></script>
      </head>
      <body>
               <div id="monDiv">
                <script type="text/javascript">
                    //<![CDATA[
                    var t = "";
                    $(document).ready(function() {
                       $("li.divT4").css({ backgroundColor: "#red", color: "#56839F", font: "14px Verdana,Sans-Serif" });
                    });
                    //]]>
                </script>
                    <ul>
                        <li id="divT1"><a href="#">Titre 1</a></li>
                        <li id="divT2"><a href="#">Titre 2</a></li>
                        <li id="divT3"><a href="#">Titre 3</a></li>
                        <li id="divT4"><a href="#">Titre 4</a></li>
                        <li id="divT5" class="active"><a href="#">Titre 5</a></li>
                    </ul>
                </div>
      <body>
    </html>
    Page : [PageB.htm]
    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
     
    <html>
      <head>
        <script type="text/javascript" language="JavaScript" src="../jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(
                function() {
                    $.ajax({
                        url: "PageA.htm",
                        type: "GET",
                        success: function(data) {
                        var content = $("#monDiv", data).html();
                            $("#essai").html(content); 
                        },
                        error: function(data) {
                            alert('La page cible ne répond pas');
                        }
                    });
                });  
        </script>
     
    </head>
      <body>
        texte...
        <div id="essai">xxx</div>
      <body>
    </html>
    Et du coup dans mon div #essai, je ne récupère que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                    <ul>
                        <li id="divT1"><a href="#">Titre 1</a></li>
                        <li id="divT2"><a href="#">Titre 2</a></li>
                        <li id="divT3"><a href="#">Titre 3</a></li>
                        <li id="divT4"><a href="#">Titre 4</a></li>
                        <li id="divT5" class="active"><a href="#">Titre 5</a></li>
                    </ul>
    au lieu de :
    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
     
                <script type="text/javascript">
                    //<![CDATA[
                    var t = "";
                    $(document).ready(function() {
                       $("li.divT4").css({ backgroundColor: "#red", color: "#56839F", font: "14px Verdana,Sans-Serif" });
                    });
                    //]]>
                </script>
                    <ul>
                        <li id="divT1"><a href="#">Titre 1</a></li>
                        <li id="divT2"><a href="#">Titre 2</a></li>
                        <li id="divT3"><a href="#">Titre 3</a></li>
                        <li id="divT4"><a href="#">Titre 4</a></li>
                        <li id="divT5" class="active"><a href="#">Titre 5</a></li>
                    </ul>
    Avec la version 1.3 de JQuery cela fonctionne parfaitement. Avec la nouvelle version 1.4.2, impossible de le faire fonctionner à nouveau. J'ai essayé pas mal de chose, mais là je cale.
    Merci encore pour votre aide.

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Je sais pas trop mais essaie de voir si en définissant ton dataType sur text dans ta requete ajax ça change quelque chose.


    Cordialement,
    Patouche

  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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    ???
    Le type, c'est "GET" ou "POST", "Ajax" n'a aucun sens et perturbe probablement jQuery...
    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

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par Bovino Voir le message
    ???
    Le type, c'est "GET" ou "POST", "Ajax" n'a aucun sens et perturbe probablement jQuery...
    Non, ça c'était juste pour son exemple de démonstration, mais ce que tu dis n'est cependant pas faux.

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Effectivement le type est "GET", j'ai également redéfini le dataType et le contentType, mais sans succès.

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    une solution un peu violent... Tu définies le header (en php) dans ton fichier A afin qu'il te renvoie un contenu text... Si tu n'as pas tout le contenu, je comprend pas trop. Et il ne faut pas que tu aies à accéder directement à ta page A sinon, ça ne fonctionne pas.

    Sinon, tu récupères ton objet xhr et tu prends le responseText.

    De plus je comprends pas trop l'intérêt d'insérer une page html dans une page html....

  10. #10
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Ma page A en fait, est un userControl (je suis en ASP.NET) qui est utilisé dans plusieurs pages dont une modale qui ne récupère qu'une partie du code de cette page.
    Il n'y a donc pas de Header dans ma page A.
    Désolé j'aurais dû effectivement donner un peu plus d'élément concernant le contexte avant tout.

  11. #11
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut La fonction .html() ne me renvoie pas ma balise <script>
    Bonjour,

    Au lieu de faire :
    <script type="text/javascript">
    $(document).ready(
    function() {
    $.ajax({
    url: "PageA.htm",
    type: "GET",
    success: function(data) {
    var content = $("#monDiv", data).html();
    $("#essai").html(content);
    },
    error: function(data) {
    alert('La page cible ne répond pas');
    }
    });
    });
    </script>
    As-tu essayer de passer directement ta variable data dans ta div ?
    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
    <script type="text/javascript">
            $(document).ready(
                function() {
                    $.ajax({
                        url: "PageA.htm",
                        type: "GET",
                        success: function(data) {
                        var content = $("#monDiv").html(data);
                        },
                        error: function(data) {
                            alert('La page cible ne répond pas');
                        }
                    });
                });  
        </script>
    En espérant que cela aide !

  12. #12
    Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Oui, j'ai essayé et il me renvoie un Object vide !
    Merci de ton aide en tout cas.

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Regarde la réponse renvoyé lorsque tu fais ta requete ajax. Si tu as firebug, la requete devrait apparaitre dans la console. Si tu n'as pas la balise <script> dans ta réponse, ça ne sert à rien de chercher du coté de la méthode .html qui n'ai alors pas en cause.


    Patouche

Discussions similaires

  1. Fonction Aggr qui ne renvoie pas les résultats attendus
    Par christelle_s dans le forum QlikView
    Réponses: 1
    Dernier message: 21/11/2013, 14h07
  2. fonction groupCount() renvoi pas le bon nombre
    Par Elendhil dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 14/01/2008, 18h18
  3. Fonction récursive qui ne renvoie pas le résultat
    Par mathieugamin dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2007, 10h29
  4. [MySQL] Fonction qui ne convertit pas les balises html
    Par tintin72 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/10/2007, 20h54
  5. [debutant] page html qui ne fait pas fonctionner la fonction
    Par Battosaiii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/03/2006, 19h25

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