15

我有一个包含很多表单字段(12 xn 行)的表单。每行中的第一个字段(代表产品)是一个类似于以下内容的复选框:

<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

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

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

(我已经通过将 ID 作为逗号分隔的字符串发送来解决它,但我想知道如何实现这一点,因为我花了足够的时间试图弄清楚)。

4

3 回答 3

23

这对我来说很好

<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>

然后在 stub.php

var_dump($_POST);
于 2012-09-15T00:11:55.923 回答
3

为什么不将 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
    }
});
于 2012-09-15T00:43:20.897 回答
0

我工作正常的解决方案

//get checkbox checked data as the array

var ids = new Array();
      $('input[name="ids[]"]:checked').each(function(){
         ids.push($(this).val());
      });



var dataString = 'ids='+ ids;


 $.ajax({
            type: "POST",
            url: "ajax_fees_pay_Directly.php",
            data: dataString,
            cache: false,
            success: function(data){

}
 });
于 2019-02-17T03:54:41.860 回答