如何解决使用jQuery的Django ajax“喜欢”按钮?
| 我想实现一个ajax“喜欢”按钮,它应该增加喜欢计数,而不刷新整个页面。我是ajax的新手,请帮助。 urls.py:(r\'^like/(\\d+)/$\',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并更新计数(如count),而无需重新加载整个页面。需要帮忙。谢谢。
解决方法
尚未进行测试,尽管类似的方法应该可以工作。编辑:经过测试,现在可以用于网页上的多个元素
Java脚本
$(\"a.like\").click(function(){
var curr_elem = $(this) ;
$.get($(this).attr(\'href\'),function(data){
var my_div = $(curr_elem).parent().find(\"b\");
my_div.text(my_div.text()*1+1);
});
return false; // prevent loading URL from href
});
Django视图
如果请求是Ajax,则可以添加以下内容:
if request.is_ajax():
, 第一件事:在要插入内容的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>
第二,在您看来,您需要返回最新的喜欢人数。您不能只在本地更新计数,因为其他人也有可能也会更新计数。
最后。在您的页面中包含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选择器才能正确操作。
另外,如果您使用POST进行查看,请将$ .get替换为$ .post
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。