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

AJAX Discussion :

[AJAX] Atteindre des éléments chargés en ajax, avec une contrainte: each


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 31
    Points
    31
    Par défaut [AJAX] Atteindre des éléments chargés en ajax, avec une contrainte: each
    Bonjour,

    me voici confronté à un problème que j'ai abordé avec la plus grande décontraction, me disant que ce serait simple et j'ai fini par m'y casser les dents:

    sur un back office je charge des données de commandes dynamiquement, et recharge ses données via xhr (jquery .ajax) toutes les 30 secondes, jusqu'ici tout va bien ! C'est ensuite que ça se corse: chaque commande dispose d'un bouton permettant de charger les données de la commande dans une box située à côté des commandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a data="action=view&id=8" class="btn viewOrder" title="voir les détails de la commande"><i class="icon-eye-open"></i></a>
    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
     
        $('.viewOrder').each(function(){
          $(this).click(function(){
            var data = $(this).attr('data');
            $.ajax({
              type: "GET",
              url: "modules/ebusiness/xhr_order_view.php",
              data: data,
              success: function(content) {
                $("#orderBox").html(content);
              },
              error: function() {
                alert('ERREUR - XHR viewOrder');
              }
            });
          });
        });
    Bien entendu ça fonctionne à merveille... et vous l'aurez compris: uniquement trente secondes.

    Bah oui il me faut encore allez chercher les éléments après que le dom soit chargé, donc me voilà en train de tâtonner à grands renforts de on(), de livequery() (et même bind(), live() ) et j'avoue commencer à perdre pieds sur ce problème qui me semblait si simple au départ.

    Je ne vais pas vous mettre tous mes tests dans le post, ça fait plus d'une heure que je retourne le problème dans tous les sens (il me semble) sans trouver de solution opérationnelle. Donc je me dis qu'un oeil extérieur avec un regard frais pourrais peut être m'aider à y voir plus clair.

  2. #2
    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 : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai du mal à comprendre ce qui coince... mais de ce que je crois comprendre de ton besoin et de ta structure,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $("#orderBox").on('click', '.viewOrder', function(){
        var data = $(this).attr('data');
        $.ajax({
          type: "GET",
          url: "modules/ebusiness/xhr_order_view.php",
          data: data,
          success: function(content) {
            $("#orderBox").html(content);
          },
          error: function() {
            alert('ERREUR - XHR viewOrder');
          }
    });
    devrait fonctionner.
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Bovino Voir le message
    J'ai du mal à comprendre ce qui coince...
    idem... ça m'a rendu dingue cette histoire. Je crois que j'avais une overdose de code avec les petites nuits que j'ai passé dernièrement.

    Citation Envoyé par Bovino Voir le message
    mais de ce que je crois comprendre de ton besoin et de ta structure,
    c'est vrai que j'ai oublié de joindre un petit schéma de ma structure globale pour faciliter la compréhension du problème.
    la box #orderBox est indépendante de mon tableau de commandes et elle n'est parente d'aucun d'entre eux, c'est la box dans laquelle j'affiche les détails de la commande.

    enfin bref, ce matin en me levant (après 4 heures de sommeil) j'ai enfin trouvé la solution en me prenant le petit déj avec du javascript sur mes tartines.

    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
     
    $(".showOrders").on('click', '.viewOrder', function(){
        $(this).each(function(){
            var data = $(this).attr('data');
            $.ajax({
              type: "GET",
              url: "modules/ebusiness/xhr_order_view.php",
              data: data,
              cache: false,
              success: function(content) {
                $("#orderBox").html(content);
              },
              error: function() {
                alert('ERREUR - XHR viewOrder');
              }
            });
          });
        });
    merci de ton aide, la conjugaison de ton post et de quelques heures de sommeil m'ont permis de trouver la solution en moins de 2 minutes.

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai peut-être raté un truc, mais ton each() ne sert à rien
    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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2012
    Messages : 26
    Points : 31
    Points
    31
    Par défaut
    hmmm effectivement il ne semble pas très utile... enfin ça marche avec !!

    Et après tests c'est sûr qu'il est totalement superflu. Merci pour ton coup de main, la deadline est aujourd'hui donc c'est le genre de détail qui a de l'importance. Je n'ai pas l'habitude de créer des back office qui rafraîchissent toutes les 30 secondes, donc c'était une petite aide mais de grande utilité.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2015, 23h18
  2. Interprèter des éléments importés par ajax
    Par Lexarino dans le forum jQuery
    Réponses: 3
    Dernier message: 15/10/2014, 10h52
  3. [AJAX] Cacher un élément chargé en ajax à son chargement
    Par Kaaribou dans le forum jQuery
    Réponses: 3
    Dernier message: 13/03/2013, 14h55
  4. Réponses: 8
    Dernier message: 26/10/2009, 13h56
  5. [AJAX] Envoi ou non d'un formulaire avec une fonction AJAX
    Par ohhh.gringo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/05/2007, 11h47

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