Php Ajax多次发送数据

Php Ajax多次发送数据,php,jquery,ajax,voting,Php,Jquery,Ajax,Voting,我为用户的帖子制作了一个简单的Ajax投票脚本:+1和-1。一切正常,但有时由于某种原因,只需点击一下,数据就会发送+3、+6、-2等。我制作了Chrome开发者工具的屏幕截图。可以看到,一次单击多次被称为PHP脚本。dot.gif-数据发送时的buzy动画 <script type="text/javascript" src="raitings/jquery.js"></script> <script type="text/javascript">$(fun

我为用户的帖子制作了一个简单的Ajax投票脚本:+1和-1。一切正常,但有时由于某种原因,只需点击一下,数据就会发送+3、+6、-2等。我制作了Chrome开发者工具的屏幕截图。可以看到,一次单击多次被称为PHP脚本。dot.gif-数据发送时的buzy动画

<script type="text/javascript" src="raitings/jquery.js"></script>
<script type="text/javascript">$(function() {$(".vote").click(function() {

var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);

if(name=='down')
{
$(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
$.ajax({type: "POST", url: "raitings/down_vote.php", data: dataString, dataType : "html", cache: false, success: function(html)
   { parent.html(html);}
 });
}
else
{
$(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
$.ajax({type: "POST", url: "raitings/up_vote.php", data: dataString, dataType : "html", cache: false, success: function(html)
   { parent.html(html);
  }  });
}
return false;
    });
});
</script>

<?php
echo "<div class=\"box1\"><div class=\"up\"><a href=\"#\" class=\"vote\" title=\"+ 1\" alt=\"+ 1\" id=".$row["id"]." name=\"up\">".$up."</a></div>"
."<div class=\"down\"><a href=\"#\" class=\"vote\" title=\"- 1\" alt=\"- 1\"  id=".$row["id"]." name=\"down\">".$down."</a></div></div>\n";

用户投票后,应禁用控件。因此,只需添加一些阻塞标志变量、cookie等:

$(function() {
var isUserVoted = false;
$(".vote").click(function() {
   if (isUserVoted) {
       return false;
   }

   isUserVoted = true;
   var id = $(this).attr("id");
   var name = $(this).attr("name");
   var dataString = 'id='+ id ;
   var parent = $(this);

   if(name=='down') {
      $(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
      $.ajax({type: "POST", url: "raitings/down_vote.php", data: dataString, dataType : "html", cache: false, success: function(html)
   { parent.html(html);}
      });
   } else {
      $(this).fadeIn(200).html('<img src="raitings/dot.gif" align="absmiddle">');
      $.ajax({type: "POST", url: "raitings/up_vote.php", data: dataString, dataType : "html", cache: false, success: function(html) { parent.html(html);
  }  });
   }
   return false;
});
});

相反,在jquery上单击事件,尝试写入onclick=function\u name;对于a href


例如……

请提供更多信息,说明此页面是否在同一容器中多次加载。看起来点击事件被多次注册。这是旧的CMS PHP核。有一个模块-来宾手册。我只是在模块的index.php中为每个post输出插入了上面的代码。我在使用jQuery.live方法时也遇到过这样的问题,有时与.die一起使用是很有用的,如果你有这种情况,那么看看.die.Nikita,你能在我的示例中演示我应该如何以及在何处调用.die吗?整个要点是让用户有机会在同一页面上的多个帖子中投票,而在你的代码中这是不可能的。只需为所有投票创建一些标记、一些地图等。若用户已投票,则不应向服务器发送任何数据。另外,按类名搜索DOM元素是最慢的一个。很抱歉,我不知道怎么做。不擅长JS。