可以使用多个查询参数来完成.get()

时间:2018-02-19 23:05:40

标签: jquery

自昨天以来,我一直对这个问题感到惊讶

$('input').click(function(){
    var suggid;
    var state;
    suggid = $(this).attr("data-notifid");
    state = $(this).attr("checked");
    $.get('/notifications/toggle_read/', {suggestion_id: suggid, unread: state});
});

我一直试图在Django应用中将suggestion_idunread发送到我的终端。在之前的迭代中,我也在尝试state = $(this).checked;,因为我发现的代码示例似乎是这样做的。

问题是我一直在测试这段代码,并且进行了一些小调整,大约50次,并且只有一次发送unread,当我将其硬编码到"1"时。 / em>在我的runserver日志和控制台中,每个其他请求都记录为:GET /notifications/toggle_read/?suggestion_id=31

在测试窗口小部件上的代码之前,我总是刷新脚本出现的页面,甚至在浏览器源中确认它是最新的。我感到困惑......根据我所读到的关于.get()的内容,这正是您应该如何发送多个查询参数,例如。

array reduce

$.get( "test.php", { name: "John", time: "2pm" } );

我做错了什么?!

2 个答案:

答案 0 :(得分:1)

使用prop('checked')获取复选框的当前值。元素上的属性不会更新。 DOM元素的属性可以。

$('input').on('click', function(){
  var $this = $(this);
  console.log($this.attr('checked'), $this.prop('checked'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" checked="false">

答案 1 :(得分:1)

要将复选框的值设为布尔值,请使用

state = $(this).is(":checked");

而不是attr("checked")然后使用该值作为GET请求的参数