jquery ajax不起作用

时间:2009-12-17 16:17:40

标签: jquery ajax

嘿,我试图在ajax请求之后更改div的html,ajax请求有效。数据是正确的,但选择器似乎找不到div

这是代码

$(".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);
        }
       }
  );
});

3 个答案:

答案 0 :(得分:6)

这可能是因为this不是你在内部函数中所期望的。您需要添加一个变量来存储引用:

$(".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);
        }
       }
  );
});

答案 1 :(得分:1)

你的问题是this没有指出你的想法。

这样做:

$(".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);
          }
       });
});

答案 2 :(得分:0)

它可能与this没有代表$(".home .up_0")元素有关,因为它在function(data){}成功函数中?

尝试添加虚拟div,id =“Test”并在成功函数内使用:

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

这会告诉你它是否有效。如果是,您需要使用var来存储this代表的内容。