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

Bibliothèques & Frameworks Discussion :

Evaluer du script contenu dans une chaîne JSON


Sujet :

Bibliothèques & Frameworks

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut Evaluer du script contenu dans une chaîne JSON
    Bonjour,

    Je vous explique mon problème.

    Avant, j'utilisais Prototype et Ajax.Request afin de modifier le contenu d'un DIV, avec comme spécificité d'évaluer les scripts contenus dans le HTML renvoyé.

    Exemple (simplifié pour le besoin de ce post ) :

    Fichier HTML principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="Javascript">
    	function ModifierleDiv(DivId) {
    		RequeteAjax = new Ajax.Request('Mon_URL_Ajax.php', {
    			method: 'get',
    			evalScripts: true,
    			onSuccess: function(transport) {
    				Resultat = transport.responseText // Chaîne
    				$(DivId).innerHTML = Resultat;
    			}
    		});
    	}
    </script>

    Fichier PHP Ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    	$Resultat = 'Youplaboum';
    	$Resultat .= '<script language="Javascript">
    		alert("Requete OK !");
    	</script>';
    	echo $Resultat;
    	exit();
    ?>

    => Le résultat obtenu était le suivant :
    • Le DIV passé en paramètre à la fonction ModifierLeDiv() était modifié
    • Le script contenu dans la réponse AJAX était évalué et faisait un alert('Requete OK !');


    Bon, comme vous vous en doutez, ce n'est pas mon vrai script, c'est simplifié au possible, et si tout était aussi simple, j'aurais placé mon alert() directement dans le onSuccess au lieu de le faire évaluer
    Si j'ai besoin d'évaluer mes scripts une fois la réponse parvenue, c'est pour plusieurs raisons, que je ne vais pas détailler.

    Bref. Ca, ça marche très bien.

    Là où ça se corse, c'est quand j'ai voulu modifier plusieurs DIV avec une seule et même requête AJAX. Du coup, on utilise JSON !

    Fichier HTML principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script language="Javascript">
    	function ModifierlesDiv(Div1, Div2, Div3) {
    		RequeteAjax = new Ajax.Request('Mon_URL_Ajax.php', {
    			method: 'get',
    			evalScripts: true,
    			onSuccess: function(transport) {
    				json = transport.responseText.evalJSON(true); // Json
    				$(Div1).innerHTML = json.Div1;
    				$(Div2).innerHTML = json.Div2;
    				$(Div3).innerHTML = json.Div3;
    			}
    		});
    	}
    </script>

    Fichier PHP Ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?
    	$Resultat['Div1'] = 'Youplaboum';
    	$Resultat['Div2'] = 'Developpez.net rocks du poney';
    	$Resultat['Div3'] .= 'Le général est arrivé à pied par la Chine. 
    	<script language="Javascript">
    		alert("Contrepétrie inside");
    	</script>';
    	echo json_encode($Resultat);
    	exit();
    ?>

    Résultat obtenu :
    • Les 3 DIVs se mettent bien à jour
    • En revanche, le javascript encapsulé dans le JSON ne s'évalue pas, je n'ai pas mon alert(). Remplacer $(Div3).innerHTML = json.Div3; par $(Div3).innerHTML = json.Div3.eval() n'y change rien...;


    La question à 100 balles : Savez-vous comment évaluer du script contenu dans une chaîne JSON ?

    Merci d'avance !!
    Ben

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Par défaut
    à tout hasard , ca marcherait peut être si tu appelais explicitement ta fonction retournée (en faisant une fonction avec un nom generique) une fois qu'elle est ratachée au DOM...

Discussions similaires

  1. [AJAX] Chargement scripts contenu dans une div
    Par SrgtPepper dans le forum jQuery
    Réponses: 5
    Dernier message: 27/11/2012, 22h46
  2. Réponses: 8
    Dernier message: 25/09/2008, 20h22
  3. Réponses: 9
    Dernier message: 02/05/2007, 14h59
  4. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 16h16
  5. Executer 1 script contenu dans une variable PHP
    Par emstar dans le forum Langage
    Réponses: 5
    Dernier message: 19/04/2006, 11h48

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