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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    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 éprouvé
    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
    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
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    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!');

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    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 expérimenté
    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
    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 : 55
    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
    ???
    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

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