在AJAX调用中传递多个复选框值

时间:2014-02-06 18:26:57

标签: javascript jquery ajax

我使用三元运算符来检查表单中的哪些复选框已被选中。如果选择了一个值,我将名称 - 值对附加到查询字符串,然后在AJAX调用中传递。如果没有,我附上一个带有空字符串值的名称。

它工作正常,我只是想知道是否有更紧凑/更优雅的方式来做这个,因为它看起来有点冗长。我想知道是否可以使用for循环。我不确定这是否可行的原因是它将涉及根据索引在循环内动态分配变量名。

    var fields = $('input[name="apn"]').serializeArray();
    var apn1 = fields[0] ? fields[0]["value"] : '' 
    query += '&apn1=' + apn1;
    var apn2 = fields[1] ? fields[1]["value"] : '' 
    query += '&apn2=' + apn2;
    var apn3 = fields[2] ? fields[2]["value"] : '' 
    query += '&apn3=' + apn3;
    var apn4 = fields[3] ? fields[3]["value"] : '' 
    query += '&apn4=' + apn4;
    var apn5 = fields[4] ? fields[4]["value"] : '' 
    query += '&apn5=' + apn5;
    ...

3 个答案:

答案 0 :(得分:0)

将值和索引映射到对象数组,并将其直接传递给$ .ajax,jQuery将为其使用$ .param:

var fields = $.map($('input[name="apn"]'), function(el, i) {
    var o = {};
    o['apn' + i] = el.value;
    return o;
});

答案 1 :(得分:0)

如果只是复选框:

$('input[name="apn"]').each(function (i, el) {
    if($(el).is(':checked')) {
        query += '&apn'+i+'=' + el.value;
    }
});

答案 2 :(得分:0)

您只需序列化表单:

var query = $("#FormId").serialize();