javascript - Django 制作按钮 Ajax

标签 javascript jquery python ajax django

我有一个可以增加点赞数的按钮。我想用ajax制作按钮,这样它就不会重新加载页面。我正在尝试关注this ,但我的按钮使用 <a type="button"> 。这是我的 html 的问题吗?

views.py

@login_required
def upvote(request):
    recommendation_id = None
    if request.method == 'GET':
        #recommendation_id = request.GET['recommendation_id']
        recommendation_id = request.POST.get('recommendation_id', False)
    upvotes = 0
    if recommendation_id:
        recommendation = coremodels.Recommendation.objects.get(id=int(recommendation_id))
        user = request.user
        recommendation.votes.up(user)
        upvotes = recommendation.votes.count()
    return HttpResponse(upvotes)

urls.py

url(r'^upvote/', coreviews.upvote, name='upvote'),

html:

<a type="button" id="upvotes" data-recommendation="{{ recommendation.id }}" href="{% url 'upvote' %}" class="btn btn-primary pull-right"><span class="glyphicon glyphicon-thumbs-up"></span>Upvote</a>

ajax.js

$('#upvotes').click(function(event){
    event.preventDefault();
    var recommendation = $(this).attr("data-recommendation");
    $.get('/upvote/', {recommendation_id: recommendation}, function(data){
               $('#upvotes').hide();
    });
});

当前错误:

点击后页面仍在重新加载。 View .py request.GET['recommendation_id']不成功。

enter image description here

最佳答案

您的页面正在重新加载,因为您有 event.preventDefault 但它未附加到任何事件。你必须像我下面那样输入函数

$('#upvotes').click(function(event){
    event.preventDefault();
    var recommendation = $(this).attr("data-recommendation");
    $.get('/upvote/', {recommendation: recommendation}, function(data){
               $('#like_count').html(data);
               $('#upvote').hide();
    });
});

或者删除所有事件并在函数底部使用return false

$('#upvotes').click(function(){
    var recommendation = $(this).attr("data-recommendation");
    $.get('/upvote/', {recommendation: recommendation}, function(data){
               $('#like_count').html(data);
               $('#upvote').hide();
    });

    return false;
});

此外,您的赞成按钮标记中没有 data-recommendation 属性。如果您查看您尝试使用的示例,您会发现作者在这一行中有这样的内容:

<button id="likes" data-catid="{{category.id}}" class="btn btn-primary" type="button">

关于javascript - Django 制作按钮 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127988/

相关文章:

python - 在 Python 中找到 "home directory"?

javascript - Jquery 验证 submitHandler 没有被调用

javascript - 短语的正则表达式(不仅仅是单词)

javascript - jQuery 动画只逐字渲染文本

jquery - 未捕获的类型错误 : Object [object Object] has no method 'on'

jquery - 使用 Magnific Popup 仅显示具有特定类别或 ID 的图像

Python 与 perl 排序性能

javascript - 或者正则表达式中的运算符

javascript - 我应该避免创建这个 JavaScript 闭包吗?

python - 使用 Python 解压缩数据包的 gzip 有效负载