我想实现一个ajax的‘喜欢’按钮,它应该增加喜欢计数,而不是刷新整个页面。我是ajax的新手,所以请帮助我。
urls.py:
(r'^like/(\d+)/$',like),下面是我对like的视图代码:
def like(request,feedno):
feed=Feed.objects.get(pk=feedno)
t=request.META['REMOTE_ADDR']
feed.add_vote(t,+1)
vote, created = Vote.objects.get_or_create(
feed=feed,
ip=t,
)
feed.likecount+=1
feed.save()
if 'HTTP_REFERER' in request.META:
return HttpResponseRedirect(request.META['HTTP_REFERER'])
return HttpResponseRedirect('/')下面是我的html(如div):
<div class="like_abuse_box">
<p>Likes:<b>{{vote.feed_set.count}}</b> ||
<a class="like" href="/like/{{feed.id}}/">Like</a> |
<a class="abuse" href="/abuse/{{feed.id}}/">Abuse</a> || </p>
</div>我应该包括哪些代码来只刷新特定的div和更新的类似计数显示,而不是整个页面被重新加载。需要帮助。谢谢。
发布于 2011-05-28 04:58:07
第一件事:在要注入内容的html元素上放一个id。
<div class="like_abuse_box">
<p>Likes:<b id="like_count">{{vote.feed_set.count}}</b> ||
<a class="like" href="/like/{{feed.id}}/">Like</a> |
<a class="abuse" href="/abuse/{{feed.id}}/">Abuse</a> || </p>
</div>其次,在您的视图中,您需要返回最新的点赞计数。你不能只在本地更新计数,因为有可能其他人也更新了like计数。
最后。在您页面中包含jquery
$("a.like").bind("click", function(){
var link = $(this).attr("href");
$.get(link, function(data) {
$(this).parent("div").children('b#like_count').html(data);
});
});我不太确定父子选择器,从超级链接点击导航到其相应的点赞计数。您可能需要使用JQuery选择器才能得到正确的结果。
ALso,如果对视图使用POST,请将$.get替换为$.post
https://stackoverflow.com/questions/6157228
复制相似问题