代码之家  ›  专栏  ›  技术社区  ›  jul

使用get方法从表单输入传递数组

  •  0
  • jul  · 技术社区  · 14 年前

    我正在使用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表单作为回退,所以在选中某些复选框时,我希望使用相同的键。

    有人知道我怎么做吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  0
  •   Nick Craver    14 年前

    这是在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
  •  0
  •   andres descalzo    14 年前

    试试这个:

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