投票系统与ajax和PHP

时间:2013-05-01 13:23:32

标签: php javascript jquery ajax

感谢阅读。

我正在努力改进,所以我正在做一个改进的示例项目。我做了一个简单的。投票制度。我有由php显示的内容的数量各有上下投票按钮。顺便说一句,我使用twitter bootstrap。

这是html代码:

<html>
<button type="submit" class="btn btn-mini upvote" id="'.$data['ContentID'].'">
    <i class="icon-arrow-up"></i>
</button>

    <span id="voteresponse">'.$data['VoteSum'].'</span>

<button type="submit" class="btn btn-mini downvote" id="'.$data['ContentID'].'">
    <i class="icon-arrow-down"></i>
</button>
</html>

问题是当我舔了按钮class="upvote"所有其他按钮做同样的事情。因为php填充的数据有很多。

这是我的javascript。

<script>
jQuery(document).ready(function($){

              $('.upvote').click( function(event) {

              event.preventDefault();

              $("#voteresponse").html('');
              var voteID = $(".upvote").first().attr("id");

                $.ajax({
                  url: "/ajax.php?Page=votetitle",
                  type: "post",
                  dataType: "json",
                  data: {id : voteID},
                  success: function(data, textStatus){
                    if(data.success == 'true'){
                      $('#voteresponse').html(data.message);
                      return true;
                    }else{
                      $('#voteresponse').popover({
                        title: 'Hata!',
                        content: data.message 
                      });
                    }
                  },
                  error:function(){
                      $('#voteresponse').popover({
                        title: 'error!',
                        content: 'Server error' 
                      });
                  }
                }); 
              });
            });
</script>

和php代码只是通常的数据库请求。

<?php

if ( $_SESSION['UserID'] <1 )
    die( print_r(json_encode(array('success'=>'false', 'message'=>'error for user!')))     );

    print_r(json_encode(array('success'=>'true', 'message'=>$_POST['id'])))

?>

您可以看到操作here。如果你点击其中一个,所有其他箭头做同样的事情。这种方法对吗?

感谢。最好的问候

2 个答案:

答案 0 :(得分:3)

当您点击其中任何一个时,只有第一个“响应”...这可能是因为var voteID = $(".upvote").first().attr("id");投票ID应该类似于$(this).attr('id');

请注意,您需要识别单击了哪个按钮,您可以使用例如$(this).parent() ...这将使您获得所单击按钮(div media isotope-item)的上层DOM级别在那里你只能修改那个div的内容。

答案 1 :(得分:3)

尝试更改

var voteID = $(".upvote").first().attr("id");

到这个

var voteID = $(this).first().attr("id");

var voteID = $(this).attr("id");