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 :

Récupérer et exécuter script [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut Récupérer et exécuter script
    Bonjour,

    Je récupère une page Web en AJAX 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
    17
    18
    19
    20
    $.ajax({
                url: "toto.html",
                type: "GET",
     
                dataType: "html",
                cache: false,
     
                //timeout: myOptions.timeout,
                error: function(jqXHR, textStatus, errorThrown){
                    alert("error");
                },
                //data: postStr,
                success: function(data){
                    //alert("success");
     
                    var $div = $("<div>").append($.parseHTML(data));
     
                    $("#myDiv1").html($div.find("#myDiv2").html());
                }
            });
    Page "toto.html"
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div id="myDiv2"></div>
    	Hello
    </div>
     
    <script type="text/javascript">
    function foo(){
        alert("hello world !");
    }
    </script>
    Est-il possible à la réception de ma requete AJAX, d'executer la fonction foo ?
    => je ne vois pas comment récupérer/executer le script

    Merci d'avance,

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    getScript()
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    Merci, mais cette fonction m'impose d'envoyer une requête AJAX supplémentaire il me semble, non ?
    => à moins que j'ai mal compris l'utilisation de la fonction

    Je voudrai dans une même requête AJAX récupérer certaines parties de la page Web et récupérer les fonctions javascript.

    Aussi j'ai un problème sous IE8, la ligne suivante me renvoi rien :

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    J'ai enfin trouvé pour que le code JavaScript soit pris en compte dans la fonction parseHTML()

    page "toto.html" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div id="myDiv2"></div>
    	Hello
    </div>
     
    <script id="scripts" type="text/javascript">
    function foo(){
        alert("hello world !");
    }
    </script>
    fonction success de $.ajax():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    success: function(data){
      var $div = $("<div>").append($.parseHTML(data, document, true));
      $("#myDiv1").html($div.find("#myDiv2").html());
      var $script = $("#scripts").html($div.find("#scripts").html());
      eval($script);
      foo();
    },
    Par contre parseHTML() ne fonctionne toujours pas sous IE8

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    J'avais une erreur dans le fichier "toto.html" (je n'avais pas mis tout le code)
    => j'avais mal refermé un div

    Par contre maintenant j'ai une erreur sur (pour IE8) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var $script = $("#scripts").html($div.find("#scripts").html());
    // var $script = $("#scripts").html("function foo(){}"); // génère aussi l'erreur

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    J'ai trouvé une solution qui à l'air de focntionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    success: function(data){
      var $div = $("<div>").append($.parseHTML(data, document, true));
      $("#myDiv1").html($div.find("#myDiv2").html());
     
      eval($div.find("#scripts").html());
      foo();
    },
    Par contre lorsque je vais recharger une autre page Web, comment faire pour vider en mémoire les fonctions que j'ai précédemment crées (vu qu'elles ne servent plus à rien)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/09/2009, 10h45
  2. [Système] Exécuter script sans afficher page
    Par philippe281281 dans le forum Langage
    Réponses: 18
    Dernier message: 08/08/2006, 19h14
  3. [Système] exécuter script VBS
    Par dj-julio dans le forum Langage
    Réponses: 1
    Dernier message: 02/02/2006, 10h27
  4. Exécuter script .SQL
    Par christellel198 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/11/2005, 15h53
  5. Réponses: 7
    Dernier message: 20/10/2005, 20h51

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