2009-12-17 5 views
0

hey, je suis en train de changer le html d'un div après une requête ajax, la requête ajax fonctionne. les données sont correctes, mais le sélecteur ne peut pas semble trouver la divjquery ajax ne fonctionnera pas

est ici le code

$(".home .up_0").click(function(){ 
    $.post("includes/vote.php", 
     { 
     truc : $(this).attr("id") 
     }, 
     function(data){ 
     if(data=='fail') 
     { 
      alert("Error."); 
     } 
     else 
     { 
      $(this).parents('.home').find('.score_neutre').html(data); 
     } 
     } 
); 
}); 
+0

Nous aurons besoin de voir pour comprendre pourquoi cela ne fonctionne pas une partie de votre code HTML. –

+0

Pouvez-vous poster le code HTML correspondant? –

+1

'this' n'existe probablement pas dans la fonction de rappel. Il y a sûrement une solution pour cela dans JQuery mais je ne sais pas comment ça s'appelle. –

Répondre

6

Ceci est probablement parce que this n'est pas ce que vous attendez dans la fonction intérieure. Vous aurez besoin d'ajouter une variable pour stocker la référence:

$(".home .up_0").click(function(){ 
    var this_obj = $(this); 
    $.post("includes/vote.php", 
     { 
     truc : $(this).attr("id") 
     }, 
     function(data){ 
     if(data=='fail') 
     { 
      alert("Error."); 
     } 
     else 
     { 
      this_obj.parents('.home').find('.score_neutre').html(data); 
     } 
     } 
); 
}); 
0

Il pourrait avoir quelque chose à voir avec this ne représente pas l'élément $(".home .up_0") depuis qu'il est entré dans la fonction de réussite function(data){}?

Essayez d'ajouter un div factice, id = « Test » et à l'intérieur de l'utilisation de la fonction de succès:

£('#Test').html(data); 

Cela vous dira si cela fonctionne. Si c'est le cas, vous devrez utiliser un var pour stocker ce que this représente.

1

Votre problème est que this ne pointe pas à ce que vous pensez qu'il est.

Faites ceci:

$(".home .up_0").click(function(){ 
    var $this = $(this); // Cache the current `this` as a jQuery wrapped DOM element 
    $.post("includes/vote.php", 
     { truc : $(this).attr("id") }, 
     function(data){ 
      if(data=='fail') { 
       alert("Error."); 
      } else { 
       // Reference the cached variable `$this` 
       $this.parents('.home').find('.score_neutre').html(data); 
      } 
     }); 
});