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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [jQuery] Code non exécuté

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[jQuery] Code non exécuté

n°2107570
Profil sup​primé
Posté le 21-10-2011 à 20:06:39  answer
 

Bonjour à tous,
 
J'aurais besoin d'un peu d'aide pour comprendre pourquoi une partie de mon code n'est pas exécuté avec jQuery. Je débute encore avec l'utilisation de la lib donc je suis preneur pour tous vos conseils.
 
Ajax.js

Code :
  1. $(document).ready(function(){
  2. // On affiche la liste des taches
  3. $.post("ajax/traitement.php",{action:"lister"},function(tab){
  4.  for(var i = 0, lg = tab.length; i < lg; i++){
  5.   switch(tab[i].priorite){
  6.    case "1":
  7.     var prio = "info";
  8.     break;
  9.    case "2":
  10.     var prio = "warning";
  11.     break;
  12.    case "3":
  13.     var prio = "error";
  14.     break;
  15.   }
  16.   var div = '<div class="alert-message block-message '+prio+'"><b>'+tab[i].nom+'</b><ul class="pb"><li><b>Date début</b> - '+tab[i].date_debut+'</li><li><b>Problème</b> - '+tab[i].probleme+'</li></div>';
  17.   $(".taches" ).append(div);
  18.  }
  19. },"json" );
  20. // Envoie du formulaire
  21. $("#form" ).submit(function(){
  22.  var isOk = true;
  23.  var titre = $("#titre" ).val();
  24.  var prio = $("#prio" ).val();
  25.  var desc = $("#desc" ).val();
  26.  if(titre == "" ){
  27.   $("#titre" ).addClass("alert" );
  28.   isOk = false;
  29.  }
  30.  if(desc == "" ){
  31.   $("#desc" ).addClass("alert" );
  32.   isOk = false;
  33.  }
  34.  if(isOk){
  35.   $.post("ajax/traitement.php",{action:"add",nom:titre,priorite:prio,description:desc},function(data){
  36.    if(data == "ok" ){
  37.     $(".displayMsg" ).html("<div class=\"alert-message block-message success\"><b>Nouvelle tâche ajoutée.</b><div>" );
  38.     $.post("ajax/traitement.php",{action:"refresh"},function(tab){
  39.      if(tab.err == "ok" ){
  40.       switch(tab.data.priorite){
  41.        case "1":
  42.         var prio = "info";
  43.         break;
  44.        case "2":
  45.         var prio = "warning";
  46.         break;
  47.        case "3":
  48.         var prio = "error";
  49.         break;
  50.       }
  51.       var div = '<div class="alert-message block-message '+prio+'"><b>'+tab.data.nom+'</b><ul class="pb"><li><b>Date début</b> - '+tab.data.date_debut+'</li><li><b>Problème</b> - '+tab.data.probleme+'</li></div>';
  52.       $(".taches:first" ).before(div);
  53.      }
  54.     },"json" );
  55.    }
  56.   },"json" );
  57.  $("#form" ).reset();
  58.  }
  59.  return false;
  60. });
  61. // On cache le commentaire du problème
  62. $(".pb" ).hide();
  63. // Hover sur les taches
  64. $(".alert-message" ).hover(function(){
  65.  $(this).append($("<span id=\"finir\"><b>x</a></b></span>" ));
  66. },function(){
  67.  $(this).find("span:last" ).remove();
  68. });
  69. // Affiche de la description
  70. $(".alert-message" ).click(function(){
  71.  $(this).find(".pb" ).toggle(300);
  72. });
  73. });


Mon problème vient du fait que le code suivant n'es pas exécuté. <code type="javascript">

Code :
  1. $(".pb" ).hide();


 
 
Pourtant que je lance cette fonction dans la console de chrome elle fonctionne.
 
J'ai aussi remarqué que lorsque je rafraîchis la page avec l'inspecteur ouvert j'ai une exception qui est levée à ce niveau là:
 

Code :
  1. matches.call( document.documentElement, "[test!='']:sizzle" );


 
 
Si vous avez des pistes, je suis preneur.
 
Merci


Message édité par Profil supprimé le 21-10-2011 à 20:06:56
mood
Publicité
Posté le 21-10-2011 à 20:06:39  profilanswer
 

n°2107600
gatsu35
Blablaté par Harko
Posté le 22-10-2011 à 08:46:18  profilanswer
 

tu caches pb en dehors de la methode de callback, car c'est dans la callback que tu le créés.
Je te rappelle que l'ajax se fait en asynchrone en général (sauf si comme un gros porc tu décides de le faire en synchrone, mais tu bloques le navigateur dans ce cas là


---------------
Blablaté par Harko
n°2107614
Profil sup​primé
Posté le 22-10-2011 à 14:16:56  answer
 

Euh, j'ai vraiment du mal à comprendre là, tu pourrais être un peu plus précis s'il te plait ? [:cupra]  
 
Pour moi (enfin de ce que je pige), c'est qu'avec ma première fonction j'affiche mes taches avec leur description dans une div.pb. Donc une fois que c'est affiché, je vois pas pourquoi mon $(".pb" ).hide() ne pourrais pas les cacher.
 

n°2107640
gatsu35
Blablaté par Harko
Posté le 22-10-2011 à 17:24:57  profilanswer
 

ton .pb existe QUAND ?
Est-ce qu'il existe avant que le javascript se lance ?  
 
Regarde bien comment se produit ton code, je te rappelle que l'ajax est asynchrone et donc ne se déroule pas dans le même ordre que le javascript.
 
 

Code :
  1. $(document).ready(function() {
  2. //premier post ajax
  3. $.post("ajax/traitement.php",{action:"lister"},function(tab){
  4.   //fonction de callback, tu ne sais pas quand cette fonction sera exécutée.
  5. });
  6. //deuxieme post ajax
  7. $("#form" ).submit(function(){
  8. //fonction de callback, tu ne sais pas si la premiere est finie d'executée ou pas, et cette fonction elle pourrait aussi bien s'exécuter avant ou apres la premiere fonction de callback
  9. });
  10. //code javascript qui suit l'ordre des choses  
  11. $(".pb" ).hide(); //tu essaye de cacher un élément qui n'existe pas encore, car cette ligne de code s'éxécute AVANT les deux première fonctions de retour ajax (callback)
  12. //idem pour le reste du code


---------------
Blablaté par Harko
n°2107645
Profil sup​primé
Posté le 22-10-2011 à 18:23:40  answer
 

Ahh ok je viens de comprendre.
 
Pour te répondre mon .pb n'existe que lorsque la fonction callback de la première requête ajax vient de se terminer.

n°2107657
gatsu35
Blablaté par Harko
Posté le 22-10-2011 à 19:53:50  profilanswer
 

maintenant tu sais ce qu'il te reste à faire :)
La premiere fonction doit s'executer, dans la callback tu fais l'appel ajax, et dans la callback de l'appel ajax, tu fait le reste de ton code. voila


---------------
Blablaté par Harko
n°2107658
Profil sup​primé
Posté le 22-10-2011 à 20:00:42  answer
 

Ouep j'ai pu corriger tout ça, merci bien  :jap:


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

  [jQuery] Code non exécuté

 

Sujets relatifs
code htlmmenu javascript + slider jquery avec IE7
Executer le code d'un bouton Access sous ExcelBesoin d'aide dans mon code
rollover sur toute une ligne et toute une colonne avec jqueryBesoin d'aide sur code
convertir code php en application (portable)[RESOLU:CONTOURNE] [jQuery] each imbriqué
j'essaie de modifier une div avec jquery et la methode animatefaire un programme qui s'execute cotée serveur
Plus de sujets relatifs à : [jQuery] Code non exécuté


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