【问题标题】:Passing array from form inputs using get method使用 get 方法从表单输入中传递数组
【发布时间】:2010-11-27 19:34:25
【问题描述】:

我正在使用 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'
});

当没有检查复选框时,变量键是“子类别”,当检查某些复选框时[]'。

现在,当使用非 ajax 表单发送并选中某些复选框时,变量键为“类别”(末尾没有 [])。

由于我想在禁用 javascript 时使用非 ajax 表单作为后备,因此我希望在选中某些复选框时使用相同的键。

有人知道我该怎么做吗?

谢谢

【问题讨论】:

标签: jquery ajax forms


【解决方案1】:

这是在 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 属性传递时最终调用的内容)....但基本上它完全符合您的要求,而将[] 关闭。

【讨论】:

    【解决方案2】:

    试试这个:

    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'
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 2014-08-17
      • 2020-06-04
      相关资源
      最近更新 更多