如何使用jQuery通过Ajax发送复选框数组的值?

2022-08-30 23:20:08

我有一个包含大量表单字段的表单(12 x n行)。每行中的第一个字段(表示产品)是一个类似于以下内容的复选框:

<input type="checkbox" class="ids" name="ids[]" value="1">

每个复选框的值都是唯一的。

我试图做的是将检查的值发送到PHP脚本,以便通过Ajax进行处理。我遇到的问题是将ID正确发送到服务器。我尝试过使用几种方法,包括:

$('.ids:checked').serialize();

var ids = [];
$('.ids:checked').each(function(i, e) {
    ids.push($(this).val());
});

$.ajax({
    url: "stub",
    type: "post",
    dataType: "json",
    data: {
        'ids[]': 'ids[]='+ids.join('&ids[]=')
    },
    success: function(data) {
        // stub
    }
});

但是这些都会导致在服务器上获得此内容:

ids[]=104&ids;[]=105

我可以序列化整个表单并将其发送过来,但这可能会导致发送大量未使用的数据。

如何仅将 的值发送到服务器?理想情况下,PHP以某种方式将其识别为数组?delete[]

(我通过将ID作为逗号分隔的字符串发送过来来解决这个问题,但想知道如何完成此操作,因为我花了足够的时间试图弄清楚它)。


答案 1

这对我来说很好

<input type="checkbox" class="ids" name="ids[]" value="2">
<input type="checkbox" class="ids" name="ids[]" value="3">
<input type="checkbox" class="ids" name="ids[]" value="4">
<input type="checkbox" class="ids" name="ids[]" value="5">
<input type="checkbox" class="ids" name="ids[]" value="6">

<div id="response"></div>
<button id="submit">Submit</button>

<script>

$('#submit').click(function() {

$.ajax({
    url: "stub.php",
    type: "post",
    data: $('.ids:checked').serialize(),
    success: function(data) {
    $('#response').html(data);
    }
});


});
</script>

然后在存根上.php

var_dump($_POST);

答案 2

为什么不将ID作为逗号分隔的字符串发送。您可以在服务器端拆分它并应用与之关联的逻辑。

var ids = [];
$('.ids:checked').each(function(i, e) {
    ids.push($(this).val());
});

$.ajax({
    url: "stub",
    type: "post",
    dataType: "json",
    data: {
        'ids[]': ids.join()
    },
    success: function(data) {
        // stub
    }
});