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] fonction js avec ajax


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [AJAX] fonction js avec ajax
    Bonjour à tous!

    Depuis plusieurs jours je suis un peu perdu sur un problème qui me semble récurent mais pour lequel je n'ai pas réussi à trouver de véritable infos sur le sujet.

    Je m'explique :

    J'ai une page resultat.php qui est divisé en deux parties, une à gauche où l'on trouve une liste de résultat et sur la droite rien dans un premier temps.
    Lorsque l'on clique sur le listing pour avoir plus d'infos on obtient un resultat sur la partie de droite (j'utilise ajax afin d'éviter de recharger mon listing a chaque fois).

    Et lorsque je souhaite utiliser du javascript sur cette partie de dorite, j'ai l'impression que la page initiale ne reconnais pas cette partie de droite qui est venu s'insérer, donc imposibilité d'utiliser le javasrcript.

    Comment faire en sorte que le javascript soit reconnu tout le temps.

    Pour contrer ce problème j'insère une iframe, et la le javascript fonctionne (normal c une nouvelle page html). Mais cette solution est assez lourde a gérer parce que je crée deux fois plus de fichiers et cette iframe ne communique pas avec la page initial.

    Pouvez vous m'aider, en espérant avoir été clair.

    Merci.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Quand tu charges un contenu via XmlHttpRequest les scripts ne sont
    pas traités. Tu devrais extraire ce qu'il y a entre les balises <script> et
    utiliser eval.

    C'est fastidieux comme travail, et les frameworks comme JQuery ou Prototype
    le gère très bien. Donc... utilise un framework :-)

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par marcha Voir le message
    C'est fastidieux comme travail, et les frameworks comme JQuery ou Prototype
    le gère très bien. Donc... utilise un framework :-)
    Fastidieux ?
    Moins que de charger un framework juste pour remplacer les 3 lignes de code de la FAQ

    A+

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Oui E.Bzz, si il n'y avais que ça d'intéressant, je suis d'accord :-)

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    J'ai testé le code de la faq avec ce fragment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <h1>Hello</h1>
    <script type='text/javascript'>
      alert('Hello 1');
      i=1;
    </script>
    <script type='text/javascript'>
      alert('Hello 2');
    </script>
    <script type='text/javascript'>
      alert('Hello 3');
    </script>
    Vicieux comme bug

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par marcha Voir le message
    Vicieux comme bug

    Tu peux développer ?

    A+

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Oui, volontiers,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (var i=0; i<mesScripts.length; i++) {
    	eval(mesScripts[i].innerHTML);
    }
    La boucle utilise 'i' comme variable de comptage, si un des scripts
    évalués utilise un i et le modifie cela perturbe le cycle de la boucle.

    dans mon exemple, cela affiche Hello 1 et Hello 3, et n'évalue pas le
    2ème script.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Wouuh p***** !

    Effectivement



    Bien que ça soit du cas particulier, c'est effectivement à prendre en compte.

    EDIT : et encore, tu n'as pas mis Re-

    A+

  9. #9
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Oui c'est vicieux, et il y a encore d'autres problèmes (le contexte du this par exemple).

    A lire sur le sujet trouvé en commentaire du code d'évaluation dans JQuery que voici:

    Code : 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
    17
    18
    19
    20
    21
    22
     
    globalEval: function( data ) {
    		data = jQuery.trim( data );
     
    		if ( data ) {
    			// Inspired by code by Andrea Giammarchi
    			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
    			var head = document.getElementsByTagName("head")[0] || document.documentElement,
    				script = document.createElement("script");
     
    			script.type = "text/javascript";
    			if ( jQuery.browser.msie )
    				script.text = data;
    			else
    				script.appendChild( document.createTextNode( data ) );
     
    			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
    			// This arises when a base node is used (#2709).
    			head.insertBefore( script, head.firstChild );
    			head.removeChild( script );
    		}
    	},
    Il semblerait que la manière la plus sure d'évaluer les scripts est
    de créer dynamiquement des script dans le dom puis de les retirer.

Discussions similaires

  1. [AJAX] Appel de fonction javascript avec AJAX
    Par Geo-x dans le forum AJAX
    Réponses: 2
    Dernier message: 02/05/2015, 19h09
  2. [AJAX] Fonction success avec AJAX
    Par prince_rick dans le forum jQuery
    Réponses: 11
    Dernier message: 13/12/2013, 15h46
  3. Réponses: 3
    Dernier message: 02/08/2008, 21h36
  4. [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
  5. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04

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