自昨天以来,我一直对这个问题感到惊讶
$('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_id
和unread
发送到我的终端。在之前的迭代中,我也在尝试state = $(this).checked;
,因为我发现的代码示例似乎是这样做的。
问题是我一直在测试这段代码,并且进行了一些小调整,大约50次,并且只有一次发送unread
,当我将其硬编码到"1"
时。 / em>在我的runserver日志和控制台中,每个其他请求都记录为:GET /notifications/toggle_read/?suggestion_id=31
。
在测试窗口小部件上的代码之前,我总是刷新脚本出现的页面,甚至在浏览器源中确认它是最新的。我感到困惑......根据我所读到的关于.get()
的内容,这正是您应该如何发送多个查询参数,例如。
$.get( "test.php", { name: "John", time: "2pm" } );
我做错了什么?!
答案 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请求的参数