我想实现一个类似'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一样,而不会重新加载整个页面。需要帮忙。感谢。
答案 0 :(得分:3)
没有经过类似的测试。 编辑:测试并运行,现在用于webapage上的多个元素
<强>的Javascript 强>
$("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():
答案 1 :(得分:0)
第一件事:在要注入的内容的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