php – jQuery AJAX在成功函数中引用$(this)

前端之家收集整理的这篇文章主要介绍了php – jQuery AJAX在成功函数中引用$(this)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个投票系统,它将点击的项目的ID发送到 PHP脚本,PHP更新数据库并通过JSON编码的数组回送新的投票计数.

这是jQuery:

  1. $(".vote_up").click(function(){
  2. var id = this.id;
  3. var vote = $(this).attr("class");
  4. var data = "id=" + id + "&vote=" + vote;
  5. $.ajax
  6. ({
  7. type: "POST",url: "vote.PHP",data: data,cache: false,success: function(data)
  8. {
  9. for(var x in data) {
  10. $(".votes_up").find(id).html(data[x].vote_up);
  11. $(".votes_down").find(id).html(data[x].vote_down);
  12. }
  13. }
  14. });
  15. });

因此,当我首先构建项目时,我将数据库中的记录ID设置为项目ID.所以我要做的是引用被点击的确切项目,并将其HTML设置为从PHP返回的数据.我已经检查了Firebug并且我得到了正确的数据,但投票数没有变化.有任何想法吗?

这是PHP供参考:

  1. $query = "SELECT vote_up,vote_down FROM posts WHERE id = '".$id."'";
  2. $result1 = MysqL_query($query);
  3. $output = Array();
  4. while ($row = MysqL_fetch_array($result1)){
  5. $output[] = Array(
  6. "vote_up" => $row['vote_up'],"vote_down" => $row['vote_down'],);
  7. }
  8. echo json_encode($output);
如果你只是想要成功:回调引用被点击的元素,只需为AJAX请求设置context:属性.
  1. $.ajax({
  2. context: this,// set the context of the callbacks
  3. type: "POST",success: function(data) {
  4. // now "this" refers to the element that was clicked
  5. }

您可以通过执行更通用的操作来测试它,例如:

  1. $(this).html("yep,it works");

…然后,如果有效,请考虑在循环中的同一元素上执行.html()实际上没有意义,因为每次.html()都会覆盖整个内容.

如果要从循环中追加数据,请使用.append():

  1. for(var x in data) {
  2. $(this).append(data[x].vote_up);
  3. $(this).append(data[x].vote_down);
  4. }

猜你在找的PHP相关文章