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] php et javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut [AJAX] php et javascript
    Bonjour à tous,

    Je ne comprends, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET", "test.php", false); // methode synchrone
    Dans test.php, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">alert ("toto");</script>
    et ca ne marche pas ...
    si j'appelle directement test.php, ca marche très bien ...
    javascript ne fonctionne pas si le page est appelée par xhr_object.open ???????


    Merci beaucoup

    Em.

  2. #2
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Normal que cela ne fonctionne pas quand tu passes par le GET.
    En effet, par cette méthode, tu ne reçois en retour que ce que la page PHP renvoie dans les "echo"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Par défaut
    je ne comprends pas ... désolé

    Ce qui est dans les echo, c'est justement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script echo "type="text/javascript">alert ("toto")";</script>
    Si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       echo "<input type=\"button\" value=\"afficher\" onClick=\"toto();\">";
    toto() étant une fonction contenant alert ("toto"); alors ca marche très bien mais il faut que je clique sur un bouton pour appeler la fonction toto(), ce que je ne veux pas.

    J'ai aussi essayé d'ajouter un onload sur un body dans le fichier test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "<body onload='toto();' ";
    echo "</body>";
    mais le onload n'est pas exécuté
    Je ne comprends pas pourquoi !!!!

  4. #4
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Dans le cas d'AJAX, tu ne charges pas vraiment une page HTML (ce qui déclencherait l'exécution du onLoad), tu affiches seulement des données au travers d'un objet (ou d'un ActiveX pour IE).

    Si tu veux exécuter du script, tu dois récupérer le contenu de la balise script et faire un eval() de ce contenu.

    Si tu veux exécuter plus simplement du script, n'utilise pas AJAX mais affiche plutôt ta page PHP dans une iframe.

    Mais les puristes te diront que c'est choisir entre la peste (eval) et le choléra (les iframes)

    Edit:je viens de voir un fil intitulé "Exécuter JS dans réponse Ajax" qui parle justement du problème qui t'occupe.

  5. #5
    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 : 54
    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
    Une solution que je trouve plus élégante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "alert ('toto')";
    Puis :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte = xhr_object.responseText;
    var newJs = document.createElement('script');
    newJs.appendChild(texte);
    document.getElementsByTagName('head')[0].appendChild(nexJs);
    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. [AJAX] détecter fin de session PHP en Javascript
    Par jason69 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 11h44
  2. Réponses: 0
    Dernier message: 12/03/2008, 21h01
  3. Réponses: 0
    Dernier message: 11/03/2008, 14h39
  4. [AJAX] code en javascript et php qui fonctionne sous FF et pas sous IE
    Par witch dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/01/2008, 12h13
  5. [AJAX] requete php dans JavaScript
    Par juliens9 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/11/2007, 13h28

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