Skip to main content
 首页 » 编程设计

javascript之带有ajax的Django投票按钮

2025年05月04日25soundcode

我有这个网址:

(r'^oyla/(\d+)/$', oyla), 

我的看法是:

@login_required 
def oyla(request, id): 
    if request.is_ajax(): 
        entry = Entry.objects.get(pk=id) 
        entry.points += 1 
        entry.save() 
        if 'HTTP_REFERER' in request.META: 
            return HttpResponseRedirect(request.META['HTTP_REFERER']) 
        return HttpResponseRedirect('/') 

我在 html 中有这些:

{{ ent.points }} 
<a href="/oyla/{{ ent.id }}" class="oyla">Vote Up</a> 

这是我的js:

<script type="text/javascript"> 
    $("a.oyla").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; 
}); 
  </script> 

我想在单击“投票”时进行投票 我想在不刷新任何页面的情况下看到分数在增加。它不起作用。它说

The view baslik.views.oyla didn't return an HttpResponse object. 

我该怎么做才能解决这个问题? 谢谢。

请您参考如下方法:

尝试在禁用缓存 的情况下使用$.ajax。我读过使用 $.ajax 适用于所有浏览器,但 $.get 不会使用 IE 发送 ajax header 。在这种情况下,is_ajax() 不是 True 并且不会返回任何 HttpResponse 对象。使用:

$("a.oyla").click(function(){ 
    var $curr_elem = $(this); 
    $.ajax({ 
        url: $curr_elem.attr('href'), 
        cache: false, 
        success: function (data) { 
            $curr_elem.parent().find("b").text(my_div.text()*1+1);   
        } 
    }); 
    return false; 
});