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] et appel de fonction


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut [AJAX] et appel de fonction
    Bonjour,

    je debute avec AJAX et suis en train de reecrire une appli qui reposait sur jsp-servlet.
    Je fais appel aux requetes asynchronisées pour rafraichir des tableaux de données. En gros je recupere un <table>...</table> generé par la servlet.

    En plus de ce tableau , je recupere également du javascript (objet + fonctions) qui est crée dynamiquement par la servlet.

    au final ma réponse contient du text du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table>...</table><script>...</script>
    le req.responseText est ensuite injectée dans un div de la facon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('resultDiv').innerHTML = req.responseText;
    Mon probleme : bien que le tableau soit bien présent, il m'est impossible d'appeler les methodes contenues dans les tag <script>
    C'est comme si le code etait absent.

    Est ce que cela est evident et si oui pourquoi ?

    Remarque : je suis certain que le code javascript fonctionne car lorsque je l'utilise sans ajax , donc avec reconstruction totale de la page , tout marche bien

    merci pour votre aide

  2. #2
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Salut,

    moi même je commence l'ajax, mais je pense que le problème vient du fait que le js s'effectue du côté client, par son navigateur, hors l'ajax n'actualise pas le code source (vérifie avec firefox), donc c'est comme si le client ne l'avait jamais reçu puisqu'il n'est pas présent dans le code de la page.

    Voilà, ça n'aide pas à la résolution du problème mais au moins, tu trouveras peut-être une autre solution (à moins que je me trompe.).
    Quelques conseils:

    Utilisez <?php plutôt que <?
    Utilisez des ' et la concaténation plutôt que "
    Pensez à revenir à la ligne après chaque ; pour plus de clarté.
    // Commentez votre code un maximum

  3. #3
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    oui c'est bien ce que j'avais compris, le source n'est pas actualisé dans la page.
    Neanmoins je pensais qu'en affectant au document la reponse renvoyée (via innerHTML) l'ensemble (<table> et <script>) etait present 'en memoire' .

    Visiblement , seul le html est interprété et pas le reste

    Dommage cela aurait pu etre interressant.

    je laisse le post ouvert au cas ou

    merci @+

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    et tu ne peux pas placer ces fonctions dans le code de ta page? Pourquoi tenter de les importer?

  5. #5
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    alors c'est ce que j'ai fait hier. en fait au debut j'importais tout car je passais dynamiquement l'id du tableau. Je me suis arrangé autrement et j'ai donc
    placé les fonctions dans la page.
    mais ca ne fonctionne toujours pas :
    en fait la fonction permet de trier un tableau html (renvoyé par ajax) en cliquant sur l'entete.
    j'utilise une librairie javascript distribuée par webfex.

    j'ai donc besoin de créer un objet js faisant référence à mon tableau (document.ElementById()) et d'une fonction redefinissant le tri pour les colonnes de types checkbox

    Comme ca ne fonctionnait toujours pas , j'ai rajouté dans la page les balises du tableau , puis du header et AJAX renvoie uniquement le corps du tableau ! mais rien n'y fait ca ne fonctionne toujours pas et je ne comprend pas vraiment pourquoi. Ca doit probablement etre du au mecanisme des fonctions de la librairie qui ne voit pas les <TR> "en dur".

    je peux eventuellement joindre un bout de code si vous voulez ....

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    j'ai donc besoin de créer un objet js faisant référence à mon tableau (document.ElementById()) et d'une fonction redefinissant le tri pour les colonnes de types checkbox
    ta fonction, c'est clair que tu peux l'inscrire dans ta page html;
    après, attention à l'importation des données du tableau: si tu utilises innerHTML, tu vas faire du "pas beau"...

  7. #7
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par javatwister
    ta fonction, c'est clair que tu peux l'inscrire dans ta page html;
    oui je l'ai fait mais ca ne fonctionne pas, a cause du innerHTML je suppose.

    Citation Envoyé par javatwister
    après, attention à l'importation des données du tableau: si tu utilises innerHTML, tu vas faire du "pas beau"...
    c'est à dire ?
    avec AJAX je ne peux faire QUE du innerHTML non ?

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ben pourquoi?
    il n'est pas normal de créer tout un tableau en innerHTML alors que tu as besoin d'acutaliser des données tabulaires uniquement;
    ton responseText peut renvoyer uniquement le tableau des nouvelles valeurs, par exemple;

  9. #9
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    en fait le contenu du tableau est different dans sa presque totalité a chaque fois (données recuperée en BDD)
    donc c'est plus economique ( a priori) de recréer l'ensemble du tableau plutot que de "calculer" quelles lignes sont à enlever, rajouter, conserver.

    c'est la raison pour laquelle j'updaté (via AJAX) le innerhtml du div contenant l'ensemble

Discussions similaires

  1. Jquery/Ajax et appel de fonctions
    Par Sébastien L dans le forum jQuery
    Réponses: 3
    Dernier message: 07/11/2012, 14h25
  2. [AJAX] Appeler une fonction en php via de l'Ajax
    Par skystef dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/09/2008, 10h27
  3. [AJAX] Appel de fonction php avec ajax
    Par simoinfonet dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/05/2008, 11h39
  4. [AJAX] [php] appel de fonction php dans evenement
    Par nicerico dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/11/2006, 12h01
  5. [AJAX] Appel de fonction javascript
    Par slaborde dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/05/2006, 19h43

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