1

我只使用 PHP 和 Smarty 为我的网站添加了投票功能。这是它的 HTML 部分:

<p>{$vote} <a href="vote.php?q_vote=vote_up&question_id={$qid}"><i class="icon-thumbs-up"></i></a> <a href="vote.php?q_vote=vote_down&question_id={$qid}"><i class="icon-thumbs-down"></i></a></p>

代码的 PHP 部分进行投票并刷新同一页面。

我想使用 jQuery 做同样的事情,这样它就不需要刷新页面。这是我在 HTML 中写的:

$("#q_upvote").click(function()
    {
        var vote = "vote_up";
        var votedata = "";
        votedata = "vote= " + vote;
        $.ajax({                 
                type: 'POST',
                url: 'vote.php',
                data: votedata,
                success: function(vote_msg){
                if(msg == 'ok')
                    {
                    //show the new vote 
                    }
                                        else
                                        //show notification
                }
    }
)
</script>

我不知道如何在那里展示新的投票。你能帮我解决这个问题吗?如果有人告诉我,如果我走对了路,我也很感激。

4

2 回答 2

1
  • 更正了您的 html 代码,以便您有一个占位符来表示投票数。

  • 更正了 Ajax 调用,以便它传递与初始 upvote 锚中的 href 相同的参数。

  • 修复了 ajax 调用中的各种语法错误

html代码

    <p>
       <span class="votenumbers">{$vote}</span> 
       <a id="upvote_{$qid}" class="q_upvote" href="#"><i class="icon-thumbs-up"></i></a> 
       <a href="vote.php?q_vote=vote_down&question_id={$qid}"><i class="icon-thumbs-down</i</a>
   </p>

jQuery 代码

$(".q_upvote").click(function()
    {
        var vote = "vote_up",
            question_id = this.id.split('_')[1], 
            votedata = "q_vote="+vote+"&question_id="+question_id;
        $.ajax({                 
                type: 'POST',
                url: 'vote.php',
                data: votedata,
                success: function(vote_msg){
                   if(vote_msg== 'ok')
                       {
                       //show the new vote
                       $(this).find('.votenumbers').closest().html(parseInt($(this).find('.votenumbers').closest().html())+1) 
                       }
                   else{
                        //show notification
                   }
                }
           });
    }
)
于 2013-05-10T12:37:35.200 回答
0

当您知道投票已正确保存时,您可以在客户端增加您的投票,例如:

<script type="text/javascript">
var votes = 0;
$("#myVoteNumberDiv").html(votes);
</script>

在这一点上//show the new vote你会写:

votes++; //or in case he voted down: votes--;
$("#myVoteNumberDiv").html(votes);

告诉我你的意思是否不同,我不完全确定我是否正确理解了你的问题。

于 2013-05-10T12:24:04.933 回答