1

ユーザーの投稿 (+ 1 と -1) 用の単純な Ajax 投票スクリプトを作成しました。すべて正常に動作しますが、何らかの理由でワンクリックで +3、+6、-2 などのデータが送信されることがあります。Chrome 開発者ツールのスクリーンショットを作成しました。その 1 回のクリックが PHP スクリプトを複数回呼び出していることがわかります。dot.gif - データ送信中のビジー アニメーション。ここに画像の説明を入力

<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";
4

2 に答える 2

1

ユーザーが投票したら、コントロールを無効にする必要があります。したがって、いくつかのブロック フラグ (変数、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;
});
});
于 2012-07-19T08:34:29.213 に答える
-1

代わりに、jquery クリック イベントで onclick="function_name();" と記述してみてください。hrefの場合..

たとえば...

于 2012-07-19T08:42:47.013 に答える