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

JavaScript Discussion :

[AJAX] responseText et JS de <script>


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut [AJAX] responseText et JS de <script>
    Bonjour,

    Firefox ignore le code JavaScript des balises script rapatriées par responseText d'"AJAX".
    Une explication ?

    (j'ai fait une 'tite recherche sur Google mais je n'ai rien trouvé , désolé)

    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    tu veux dire que tu essaye de dire au browser que du texte récupéré par ajax est en fait un script ???

    essaye plutot de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement('script')
    et ensuite de lui coller ton texte en innerHTML

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Disons que je récupère un truc du genre :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <b>coucou</b>
    <script>alert("coucou")</script>

    <script> est ignoré et je ne sais pas si c'est normal ou pas.

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    oui c'est normal on ne peut pas inserer un script comme ça sur une page ...
    il faut passer par un createElement ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Une fois que j'ai mon responseText, comment j'utilise createElement ?
    En fait, je ne vois pas comment faire avec cette méthode ...

  6. #6
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    dans ton responseTexte il te faut uniquement le code sans les balises ...


    ensuite tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var BaliseScript=document.createElement('script')
    BaliseScript.type='text/javascript'
    et ensuite tu colles le code récupéré dedans :

    avec innerTHML ou createTextNode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BaliseScript.appendChild(document.createTextNode(responseText))
    et pour finir tu le colle dans le body

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.appendChild(BaliseScript)
    ou ailleurs ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Excuse moi, j'ai du mal à te suivre Je suis plutôt débutant en JS ...

    Je veux changer le contenu d'un div mais je ne vois pas comment remplacer le contenu de ce div par "BaliseScript".

    De plus mon reponseText est globalement un bout de code HTML.
    Ca ne va pas poser problème au nouvel élement 'script' qu'on lui donne du HTML ? Il ne devrait pas plus attendre que du JS ?

  8. #8
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    le contenu d'un div ?
    ha en fait je crois que je viens de comprendre, tu cherche à mettre le code visible sur la page ...
    et non un script actif ...

    n'utilise pas un div mais une balise <pre> et ton javascript sera alors visible et non interprété comme un script ...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Aïe, je ne fais toujours pas bien comprendre ...

    Reprenons ^^ !

    Je reçois par responseText un bout de page HTML à mettre dans un innerHTML (d'un div).
    Donc ça peut représenter n'importe quoi : un tableau, des formulaires, des listes ...

    Sur ce bout de page, je veux également insérer des balises <script> pour qu'elles soient intrépretées.

    Par exemple pour :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>coucou1</b><script>alert("coucou2")</script>

    je m'attendais à voir - en plus du 'coucou1' dans un div qui fonctionne - 'coucou2' dans le popup ...

  10. #10
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    question subsidiaire ...
    sisi on va y arriver ...

    le script il est dans le responseText noyé dasn le reste ou séparé ???


    et pour qu'il soit interprété, je confirme le createElement ...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Oui, il est noyé ...

    Essaies tu de dire qu'il faut essayer de le sauver de la noyade pour qu'il vie ?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    J'ai l'impression que c'est du côté de "l'event" que vient le problème.

    En fait, ton morceau de code JS passe très bien sur la page, mais le problème est qu'il n'est pas executé.

    Pour en avoir le coeur net, renvoi par ajax un morceau de code par exemple un lien appelant une fonction JS (envoyé par Ajax) qui affiche une alerte.

    Ca devrait marcher...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Oui les onclick et toutes ces choses fonctionnent.
    C'est juste le contenu des <script> qui ne passent pas.

  14. #14
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    il faut sortir tes scripts du response texte (avec un regExp par exemple)
    et créer les scripts avec le DOM avec créateElement('script') comme explicité plus haut ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 63
    Points
    63
    Par défaut
    Maintenant que l'on a recollé les morceaux, ça marche !

    Voici mon code :
    Code JAVASCRIPT : 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
     
    var tmp = xhr_object.responseText;
    document.getElementById(divDest).innerHTML= tmp;
     
    y_exec_scripts(document.getElementById(divDest));
     
    function y_exec_scripts(obj){
    	scripts = obj.getElementsByTagName("script");
     
    	for(i=0;i<scripts.length;i++){
    		var BaliseScript=document.createElement('script');
    		BaliseScript.type='text/javascript'  
    		BaliseScript.appendChild(document.createTextNode(scripts[i].innerHTML))
    		document.body.appendChild(BaliseScript)
    	}
    }

    Ca double les balises <script> dans le DOM mais ça ne me dérange pas puisque la moitié n'est pas interprété.

    Je suis preneur de toute amélioration ^^

  16. #16
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    oui je disais que tu pouvais fire un regExp pour faire un replace dans le responseText de <script ...... script>

  17. #17
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Une solution (mieux?) existait déjà dans la partie "Proposition d'ajout à la FAQ" de ce forum : http://www.developpez.net/forums/sho...?t=6259&page=2

  18. #18
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    tu peux préciser quel post FREMAY ? je ne vois pas à quel code tu fais allusion ...

  19. #19
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239

  20. #20
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    arf oui parser le responseText

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] Perl CGI Ajax, Header, ajout de références scripts externes
    Par smooky132 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/11/2008, 16h42
  2. [AJAX] erreur AJAX, responseText
    Par locs dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/07/2007, 19h07
  3. [AJAX] Répétition d'appel de script ajax dans un même formulaire
    Par lodan dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/09/2006, 17h47
  4. [AJAX] responseText ou responseXML ?
    Par Greggggggg dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/08/2006, 09h46
  5. [AJAX] responseText est vide
    Par julien.63 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/04/2006, 16h28

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