我使用get方法从表单输入(复选框)传递数组。 在ajax中进行时,使用:
var subcat_checked = new Array();
$.each($("input[name='subcategories']:checked"), function() {
subcat_checked.push($(this).val());
});
$.ajax({
type: 'GET',
url: '{% url view-category root_category.slug %}',
data: {subcat: subcat_checked},
success: function(result) {
/* stuff */
},
dataType: 'json'
});
如果没有选中复选框,则变量键为'subcategories';如果选中某些复选键,则为'subcategories []'。
现在,当使用非ajax表单发送它并检查一些复选框时,变量键是'categories'(最后没有[])。
因为如果禁用javascript我想使用非ajax表单作为后备,我想在选中某些复选框时使用相同的键。
有人知道我该怎么做吗?
由于
答案 0 :(得分:0)
试试这个:
var subcat_checked = $("input[name='subcategories']:checked").serializeArray();
$.ajax({
type: 'GET',
url: '{% url view-category root_category.slug %}',
data: {subcat: subcat_checked},
success: function(result) {
/* stuff */
},
dataType: 'json'
});
答案 1 :(得分:0)
这是jQuery 1.4+中的更改,但您可以使用traditional
option撤消它以获取旧的非[]
序列化,如下所示:
$.ajax({
traditional: true,
type: 'GET',
url: '{% url view-category root_category.slug %}',
data: {subcat: subcat_checked},
success: function(result) {
/* stuff */
},
dataType: 'json'
});
您可以在the $.param()
docs中了解有关该选项的更多信息(将对象作为data
属性传递时最终调用的内容)....但基本上它完全符合您的要求,留下{{ 1}}关闭。