Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2009 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Appel AJAX qui s'effectue trop de fois (event JS)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel AJAX qui s'effectue trop de fois (event JS)

n°1917360
vhAnton
Posté le 21-08-2009 à 15:51:22  profilanswer
 

Bonjour a tous
Je m'arrache les cheveux sur un bug depuis le début de l'aprem, avant de devenir chauve je vais vous demander votre avis.
 
Alors, long story short, j'ai une appli web, et de temps en temps un div "modal" apparait. Voila le div en simplifié.
 

Code :
  1. <div id="dialog" class="window">
  2.   <a href="#" class='valid'>Valid it</a>
  3.   <a href="#" class='close'>Close it</a>
  4. </div>


 
Dans mon JS, j'ai une fonction showModal(latlng,overlay) (les attributs latlng et overlay sont des objet de l'API GoogleMaps), qui, encore une fois simplifiée, ressemble a ça :

Code :
  1. function showModal(overlay, latlng) {
  2.      // Je rend mon div #dialog visible & compagnie
  3.      [...]
  4.      // Maintenant les event liés aux link présents dans #dialog
  5. $('.window .close').click(function (e) {
  6.  e.preventDefault();
  7.  $('#dialog').hide();
  8. });
  9.    
  10. $('.window .valid').click(function(e) {
  11.  $.ajax({
  12.                     [...] Appel AJAX en se servant de l'argument 'latlng' de showModal(..)
  13.  });
  14.  $('#dialog').hide();
  15. });
  16. }


 
Passons maintenant a mon problème : Je click sur ma carte Gmaps, ce qui lance showModal(latlng, overlay) ; je décide de ne pas validé, je fait clic donc sur Close it, mon div disparait. Tout va bien.
 
Mais si maintenant je clic quelque part d'autre sur ma carte, et que je clic sur Valid it, BLAM ! Deux appels AJAX, une fois avec le latlng du premier clic, et une fois avec celui du second (légitime lui).
 
Voila donc mon problème, mon event javascript qui lance l'appel AJAX est toujours la, n'est pas overide, et par conséquent se lance trop de fois. Je ne sais pas comment faire pour empêcher cela.
 
Merci de votre aide
 

mood
Publicité
Posté le 21-08-2009 à 15:51:22  profilanswer
 

n°1917374
pataluc
Posté le 21-08-2009 à 16:20:01  profilanswer
 

pour moi ton code recrée un event à chaque click, donc normal... pour y remédier, tu sors l'appel à tes click de ta fonction:

 
Code :
  1. // Maintenant les event liés aux link présents dans #dialog
  2. $('.window .close').click(function (e) {
  3. e.preventDefault();
  4. $('#dialog').hide();
  5. });
  6.  
  7. $('.window .valid').click(function(e) {
  8. $.ajax({
  9.                   // [...] Appel AJAX en se servant de l'argument 'latlng' de showModal(..)
  10. });
  11. $('#dialog').hide();
  12. });
  13.  
  14. function showModal(overlay, latlng) {
  15.     // Je rend mon div #dialog visible & compagnie
  16.     [...]
  17.  
  18. }
 

après pour le passage de l'argument latlng, tu bidouille un truc, tu genre tu le mets dans un truc caché, et ca roule:

Code :
  1. <div id="dialog" class="window">
  2.    <input type="hidden" name="latlng" value="" />
  3.    <a href="#" class='valid'>Valid it</a>
  4.    <a href="#" class='close'>Close it</a>
  5.  
  6. </div>
 


Message édité par pataluc le 21-08-2009 à 16:20:33
n°1917378
vhAnton
Posté le 21-08-2009 à 16:25:22  profilanswer
 

Effectivement ca peux fonctionner, ca m'embete un peu de passer mon latlng en input type hidden (c'est un objet, pas des plus complex mais bon).
 
Cette solution va effectivement marcher, mais est-il possible de suprimmer l'event de la class valid ? Si c'est possible, je peux le faire quand on click sur Close It.
 
Merci en tout cas

n°1917388
pataluc
Posté le 21-08-2009 à 16:34:08  profilanswer
 

effectivement supprimer l'event serait plus classe... je sais pas si on peut.
 
c'est quoi, du jquery, prototype, mootools?

n°1917389
pataluc
Posté le 21-08-2009 à 16:35:42  profilanswer
 

avec jquery tu as unbind qui le fait: http://docs.jquery.com/Events/unbind#typefn

 


EDIT: par contre si j'étais toi, je laisserai le close à l'extérieur vu qu'il ne prend pas de param...


Message édité par pataluc le 21-08-2009 à 16:38:35
n°1917392
vhAnton
Posté le 21-08-2009 à 16:39:51  profilanswer
 

Yup,  
Thank you =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Appel AJAX qui s'effectue trop de fois (event JS)

 

Sujets relatifs
[ajax] Mon readyState ne dépasse pas 1 avec IERenvoyer un fichier Xml après appel d'un WCF
Modifier le contenu d'une iframe (CSS/JS)[Ajax/JS/PHP] Gérer l'affichage d'un formulaire
Formulaire HTML & JS : un bouton pour changer tous les radios[JS]Split sur retour à la ligne
[resolu]Ajax.updater et IE[STRUTS]Envoyer un formulaire valide a partir d'une action Struts [OK]
Chronomètre en Ajax 
Plus de sujets relatifs à : Appel AJAX qui s'effectue trop de fois (event JS)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR