【发布时间】:2017-05-07 13:08:47
【问题描述】:
在我的项目中,可以对帖子进行投票。当我不使用 Jquery-Ajax 时,这很好用。不过,它会重新加载页面,我不希望这样。
我实现了一些 Jquery-Ajax 来执行 POST 请求,并将按钮更新为 upvoted。不幸的是,这会导致列表中的所有帖子都被点赞,而不仅仅是我点击的帖子。
让我向您展示 HTML(在循环的帖子列表中):
{% for post in posts %}
{{ post.title }}
<hr>
{{ post.content }}
{% with user=request.user %}
<a class="upvote" data-postid="{{ post.id }}" href='#' >
<span class="btn btn-primary" aria-hidden="true">
Upvote | {{ post.followers }}
</span>
</a>
{% endwith %}
{% endfor {%
这是赞成和赞成按钮的 HTML。
这是我的 Jquery 脚本:
<script src="{% static 'posts/jquery-3.1.1.js' %}"></script>
<script type="text/javascript">
$(".upvote").click(function(event){
var postid = $(this).data('postid');
$.ajax({url: "/activity/follow/10/{{ post.id }}?next={{ request.path }}&postid=" + postid, success: function (data) {
event.preventDefault();
$(".upvote").addClass('hidden');
}
});
});
</script>
总而言之,我如何让这个功能只对我点击的帖子投票,而不是对列表中的每个人都投票?谢谢!
【问题讨论】:
-
每个点赞按钮的帖子 ID 在哪里?您需要在
.click()函数中获取它,并将其作为参数发送到服务器。 -
抱歉,不知道 django,所以我不知道你如何将它编码成
{%...%}的东西。 -
将
data-postid="{% post.id %}"添加到锚点,然后可以在.click()函数中做var postid = $(this).data('postid');,并将帖子ID添加到URL。 -
您没有将
postid发送到服务器。您需要将其添加为 URL 参数。 -
"{% follow_url post %}?next={{ request.path }}&postid=" + postid。然后更改服务器脚本以更新$_GET['postid']的投票计数
标签: jquery python html ajax django