2013-09-28 67 views
2

我有点卡住了,我试图添加投票系统到我的博客使用jQuery,Ajax和Django,但我没有找到最好的方式来做到这一点。投票系统与Django,jQuery和Ajax

这里是我的问题:

  1. 我怎样才能获得{{blog.id}}在具有发送作为方法.post的参数我的jQuery脚本?
  2. 在我的jQuery脚本中,如何找到{%static%}用于更改投票图像的路径?

这里是我得到了什么,至今...

votes.html

<a>Total: {{ total_votes }} </a> 
<input type="hidden" name="blog_id" value={{ blog.id }}> 
<div class="vote-buttons"> 
{% if vote.up %} 
    <img class="vote-up selected" src="{%static "assets/images/up_on.png"%}"/> 
{% else %} 
    <img class="vote-up" src="{% static "assets/images/up_off.png" %}"/> 
{% endif %} 
{% if vote.down %} 
    <img class="vote-down selected" src="{%static "assets/images/down_on.png"%}"/> 
{% else %} 
    <img class="vote-down" src="{% static "assets/images/down_off.png" %}"/> 
{% endif %} 
</div> 

的jQuery /阿贾克斯

$(document).ready(function(){ 
    $('.vote-up, .vote-down').css('cursor', 'pointer'); 
    $('div.vote-buttons img.vote-up').click(function(){ 
     if($(this).hasClass('selected')){ 
      $.post('myurl', {params:params}, function(response){ 
       $(this).removeAttr('src') 
        .attr('src',"...") # how to get the template {% static %} path? 
        .removeClass('selected'); 
      }); 
     }else{ 
      # when vote isn't selected 
     } 
    }); 
}); 

回答

0

我找到了解决办法,找我每天blog.id的唯一ID:

var id = $('input[name="blog_id"]', $(this)).val(); 

和@DGS说,找到我使用的静态路径:

<script> 
    var static_path = "{% static "assets/images/" %}" 
</script> 
2

{{ blog.id }}将成为隐藏的输入值与名称blog_id所以你可以找到它像这样

$('input[name="blog_id"]').val();

静态路径可以通过查看其中一个图像的src来找到。

尝试$('.vote-up').attr('src').replace('assets/images/up_off.png','');

你也可以只创建JavaScript变数从模板为您办理值。

<script> 
    var blog_id = {{ blog.id }}; 
    var static_path = "{% static "assets/images/" %}" 
</script> 

并引用这些值。

+0

谢谢你,'$('input [name =“blog_id”]')。val();'返回blog.id的最后一个id,而不是所选的那个,我错过了什么? – Pompeyo

+0

问题是我在一个循环内,所以有很多投票显示。这就是为什么我得到最后一个blog.id。有没有在jQuery中找到'$(this)'选定输入的方法? – Pompeyo