通过Django中同一页面上的多个按钮启动AJAX请求

JSNoob

好的,所以我想使用Ajax向我的网站(基于django)添加投票。我在一个页面中有多个条目,但是现在我的代码只允许用户对第一个条目进行投票。请使用代码帮助我,以便用户可以对所有代码进行投票。

首先是html代码,基本上它只是供用户投票的投票按钮

{% for answer in answers %}<!-- django template -->
<strong id="vote_count">{{ answer.votes }}</strong> people vote this answer

{% if user.is_authenticated %}
        <button id="vote" data-answerid="{{answer.id}}" class="btn btn-primary" type="button">
        <span class="glyphicon glyphicon-thumbs-up"></span>
        Vote
        </button>
{% endif %}
{% endfor %}<!-- end django template -->

其次,下面是处理请求的django视图

@login_required
def vote_answer(request):
  answer_id = None
  if request.method == 'GET':
      answer_id = request.GET['answer_id']

  votes = 0 
  if answer_id:
      answer = Answer.objects.get(id=answer_id)
      if answer:
          votes = answer.votes + 1
          answer.votes = votes
          answer.save()

  return HttpResponse(votes)

以下是网址映射:

url(r'^like_category/$', views.like_category, name='like_category'),

最后是javascript

$('#vote').click(function(){
    var answerid;
    answerid = $(this).attr("data-answerid");
    $.get('/vote_answer/', {answer_id: answerid}, function(data){
               $('#vote_count').html(data);
               $('#vote').hide();
    });
});

同样,我的问题是我在一页中拥有的所有条目,使用此代码,我只能对第一个进行投票。如何修改它,以便我可以全部投票

大田美子

您需要使用class而不是idon <button>,以便多个按钮可以共享相同的jQuery事件处理程序。

<button class="vote" data-answerid="...">

然后,您可以在JavaScript中执行以下操作:

$(document).on("click", ".vote", function(){
    var answerid;
    answerid = $(this).attr("data-answerid");
    $.get('/vote_answer/', {answer_id: answerid}, function(data){
               $('#vote_count').html(data);
               $('#vote').hide();
    });
});

这将绑定事件处理程序以单击any <button class=vote>

同样,您应该执行AJAX POST而不是HTTP语义的GET,因为投票是一种状态更改操作。否则,浏览器或Web代理可能会缓存结果(尽管jQuery有其自己的缓存破坏器)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在同一页面上单击按钮后使用ajax发送多个发布请求

来自分类Dev

如何在同一页面上从 Django 和 Ajax 获得多个发布请求?

来自分类Dev

区分Django views.py中同一页面上的不同发布请求

来自分类Dev

在同一页面中停止多个AJAX请求

来自分类Dev

同一页面上有多个Ajax调用:来自Ajax加载的div中的Ajax调用

来自分类Dev

如何在特定代码块中的同一页面上一一发送ajax请求

来自分类常见问题

使用SoapUI时,是否可以在同一页面上显示多个请求?

来自分类Dev

使用SoapUI时,是否可以在同一页面上显示多个请求?

来自分类Dev

脸书分享。更改“说些什么”,同一页面上的多个按钮

来自分类Dev

通过同一页面上的函数传递输入

来自分类Dev

验证同一页面上的多个表单

来自分类Dev

同一页面上有多个Slickgrid

来自分类Dev

多个计算,显示在同一页面上

来自分类Dev

同一页面上的多个ClojureScript文件

来自分类Dev

烧瓶-同一页面上的多个分页

来自分类Dev

同一页面上的多个模板

来自分类Dev

在同一页面上设置多个表单/验证

来自分类Dev

同一页面上的多个不同CKeditor实例

来自分类Dev

同一页面上的多个AjaxLazyLoadPanel Wicket 8

来自分类Dev

多个计算,显示在同一页面上

来自分类Dev

在同一页面上显示多个Google图表

来自分类Dev

在同一页面上使用多个指令

来自分类Dev

同一页面上的多个jquery版本

来自分类Dev

同一页面上的多个模板

来自分类Dev

同一页面上的多个WebGL模型

来自分类Dev

同一页面上的多个Google街景视图

来自分类Dev

同一页面上的多个输入 [type=file]

来自分类Dev

在同一页面上移动多个 div

来自分类Dev

在同一页面上烧瓶多个表单

Related 相关文章

热门标签

归档