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 :

lancer fonction sur retour ajax


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut lancer fonction sur retour ajax
    Voilà, j'écris actuellement mon code final d'index.php qui va me servir de liens avec les autres pages que j'ai crée.
    Le principe est classique : j'ai une div "corps" dans ma page que je mets à jour via Ajax en fonction des liens cliqués. Je me heurte au problème suivant.
    J'ai une page qui nécessite un code JS. Cette page est mise à jour à l'appel de la fonction Ajax mais le code ne se lance pas (logique...).

    Y aurait-il un moyen de lancer du code JS au chargement de cette page ?

    Je vous remercie d'avance pour vos réponses et vous souhaite de passer une agréable journée (ensoleillée).

    Bien à vous.

    J.

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2005
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2005
    Messages : 75
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Je pense que sur le forum Javascript tu auras plus d'aide qu'ici !

    sinon comme pour lancer du JS au chargment de la page dans la balise body avec onload

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci de ta réponse. Cependant, mon code php de la page appelée ne dispose pas de balise body mais que de lignes php pures. Seule ma page principale (index.php) contient un body. Un 2ème body est possible ?

  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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Non un second body est à proscrire ...

    Deux possibilités:

    soit tu mets la fonction dans le header de ta page index et tu m'appelles à la fin de l'ajax...


    soit tu mets le script à la fin de la partie importée par ajax
    avec un eval, mais pas terrible
    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 !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    J'ai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function requete()
    	{
    		elementHTML = $('corps');
    		if(url == 'grades.php')
    			var maRequete = new Ajax.Updater(elementHTML,url, {
    					onSuccess:function() {
    					//lancement de al fonction
    					}
    			});
    		else
    			var maRequete = new Ajax.Updater(elementHTML,
    	}
    Mais cela ne semble pas fonctionner. J'ai suivi ton conseil en plaçant le script dans le head de la page principal.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    J'ai omis de préciser que je chargeais le résultat d'une page php (en l'occurence ici un tableau) dans une div de ma page d'index. J'ai écrit une page JS qui permet de "naviguer" dans ce tableau (recherche d'une personne grâce au nom par ex.).
    Et c'est là que le problème se pose. Le JS ne s'exécute pas comme s'il n'y avait aucun tableau... Est-ce dû au framework à tout hasard?

  7. #7
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tableau ?
    balise table ou array ?

    si c'est un array comment le passes tu à javascript ?
    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 !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Avec la balise table. Un fichier PHP réecrit tout le tableau suivant les résultats et renvoie le tout via XHR pour l'affichage (via un innerHTML pas très recommandé j'en suis conscient).

  9. #9
    Membre averti Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 350
    Points
    350
    Par défaut
    Si tu sais ou se trouvera la balise </body>, suffit que tu ajoute juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script language="javascript">
    //ton code javascript a executer, mais ne pas mettre dans une function sinon il ne sera pas "executé"
    </script>
    Normalement il se lancera en dernier, ca precede l'evenement "onload" du "body" pour info
    Le forum c'est trop génial

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Oui j'ai pensé que cela marcherait aussi mais il n'en est point.

    Un simple alert du contenu d'une des textbox de mon tableau semble bloquer tout mon script (le débuggueur ne bronche pas pourtant) et les codes placés après cet alert sont zappés.
    Assez étrange comme souci.
    .

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Problème résolu.

  12. #12
    Membre habitué Avatar de Dionyzos
    Homme Profil pro
    Développeur & Designer Web
    Inscrit en
    Février 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur & Designer Web

    Informations forums :
    Inscription : Février 2004
    Messages : 134
    Points : 156
    Points
    156
    Par défaut
    Salut jyuzakumo

    Pourrais-tu donner ta solution STP, car je suis également dans le même cas que toi.

    Je redonne quand même la description de mon problème :
    Dans le <HEAD> de ma page principale j'ai un lien vers un fichier Javascript, lequel contient une fonction onMouseOver exécutée sur un de mes <TABLE> de la page.

    Au chargement complet de la page, aucun soucis la fonction JS s'exécute parfaitement sur mon <TABLE>.

    A l'aide d'une autre fonction je recharge, via Ajax, le bloc <DIV> qui contient le <TABLE>. Et là, c'est le drame ! La fonction onMouseOver ne répond plus

    Donc, je pense que c'est le même type de problème.

    Pour info, j'aimerais éviter de devoir mettre le code JS directement dans le contenu HTML (pas propre à mes yeux )

    Merci

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Mille excuses pour le temps de réponse, je ne consultais plus trop le forum dernièrement.

    Alors pour ton problème ça peut venir du chargement de la page via Ajax (tu t'en doutais), il semblerait en fait que, parfois, le DOM n'ait pas finit de recharger l'arbre complet de la structure de la page. Par conséquent si ton élément table n'existe pas dans le DOM, il ne peut être exploité via JS...

    La solution à mon problème a été de lancer les fonctions JS une fois que la totalité de la page a été correctement transmise. Il faut utiliser une fonction callback (si tu utilises des frameworks) ou alors lancer tes fonctions au fameux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     xhr.onreadystatechange = function() {
    			if (xhr.readyState == 4)
    				if (xhr.status == 200) { // pas d'erreur de chargement
    						// ici ton code 
     
    				}
    Si tu as besoin de détails contacte moi plutôt par mail : jyuzakumo@hotmail.com

    Je ferais de mon mieux pour te guider (si tu as encore ce problème).

    Bon courage et encore désolé...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/05/2010, 22h05
  2. référence sur retour de fonction
    Par Yoxoman dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2010, 17h39
  3. [AJAX] fonction setinterval sur frame ajax
    Par speedylol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/01/2008, 15h28
  4. lancer une fonction sur un lien
    Par PAYASS59 dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2006, 12h46
  5. Comment lancer cette fonction sur un bouton ?
    Par jeronimo dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2006, 11h33

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