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

jQuery Discussion :

Vider cache dom après retour ajax


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut Vider cache dom après retour ajax
    Bonjour à tous,

    j'ai un petit jQuery qui marche très bien qui permet de poster un formulaire :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    $(\'[id^="message_"]\').click(function() {
     
    				var id_message = $(this).attr(\'id\').replace(/[^0-9]/g,\'\');
     
    				$(\'#messagerie_\' + id_message).on(\'submit\', function(e) {
     
    					var message = $(\'#contenu_\' + id_message).val();
     
    					if(message == "") {
    						alert("Le message ne peut etre envoyé vide.");
    					} else {
    						$.ajax({
    							url: "post_message.php",
    							type: "POST",
    							data: $(this).serialize(),
    							dataType: "json",
    							success: function(data) {
     
    								if(data.success == true) {
    									$("#repondre_" + id_message).hide();
    									$("#message_confirmation_" + id_message).show();
    																	}
     
    															}
    						});
    					}
    					return false;
    				});
     
     
    			});
    Ne faites pas attention aux simples quotes echapées, c'est parce que le code est généré en PHP

    du coup, dans ce script, je récupère de un ID de div dynamiquement, et je fais le traitement...

    Mon problème c'est que si je clique à nouveau sur mon bouton pour renvoyer un message, il part 2 fois, et les ainsi de suite, si je clique encore, il part 3 fois etc.

    Quelqu'un à une idée ?
    D'avance merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    je viens de trouver la solution avec ca unbind() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#messagerie_" + id_message).unbind();
    Si ca peut aider :o)

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    c'est l'agencement qui me paraît approximatif, j'aurais séparé en 2 étapes, par exemple
    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
    23
    24
    25
    26
    27
    28
     $('[id^="message_"]') on('click', function() {
         var id_message = $(this).attr('id').replace(/[^0-9]/g, '');
         $('#messagerie_' + id_message).trigger('submit');
     });
     
     $('[id^=messagerie_').on('submit', function(e) {
         e.preventDefault();
     
         var id_message = $(this).attr('id').replace('messagerie_', '');     
         var message = $('#contenu_' + id_message).val();
     
         if (message == "") {
             alert("Le message ne peut etre envoyé vide.");
         } else {
             $.ajax({
                 url: "post_message.php",
                 type: "POST",
                 data: $(this).serialize(),
                 dataType: "json",
                 success: function(data) {
                     if (data.success == true) {
                         $("#repondre_" + id_message).hide();
                         $("#message_confirmation_" + id_message).show();
                     }
                 }
             });
         }
     });
    ou un truc approchant.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    je sais que le code, comme ca, n'est pas très propre, mais ce que je voulais c'est que le submit se fasse obligatoirement après le click de message_
    c'est pour cela que je l'ai imbriqué.

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

Discussions similaires

  1. [AJAX] AJAX de condition après retour de resultat
    Par gentil2005 dans le forum AJAX
    Réponses: 4
    Dernier message: 03/07/2012, 16h23
  2. Recharger le DOM après appel AJAX
    Par Maerlyn31 dans le forum jQuery
    Réponses: 4
    Dernier message: 13/07/2011, 09h53
  3. Vider le buffer après un sleep ?
    Par olivier857 dans le forum C
    Réponses: 7
    Dernier message: 28/03/2006, 15h00
  4. [VB6]Vider la memoire des retours chariot
    Par jojo-la-praline dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/03/2006, 23h30
  5. Vider cache IE en php
    Par nounours21_6 dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2006, 00h37

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