【问题标题】:collect all the values of all checboxes to pass through ajax收集所有复选框的所有值以通过ajax
【发布时间】:2020-04-30 19:06:57
【问题描述】:

我想在一个可以通过 ajax 传递的字符串中获取选中的复选框的所有值。

<input value="1" class="customer" type="checkbox">
<input value="2" class="customer" type="checkbox">
<input value="3" class="customer" type="checkbox">
<input value="4" class="customer" type="checkbox">
<input value="5" class="customer" type="checkbox">

所以如果勾选了2和5,我想创建一个变量var checked='2,5'

var checked_arr = [];
$('.customer:checked').each(function(){
    checked_arr.push($(this).val());
});
checked = JSON.stringify(checked_arr);
$.ajax({
    type    : 'POST',
    url     : '//'+base_url+'/ajax/customers.php',
    data    : 'checked='+checked,
    success : function(data) {
    }
}); 

我认为我需要对其进行 json 编码以传递数组,但我什至似乎没有正确创建数组。我想我在将值推入数组时遗漏了一些东西。

【问题讨论】:

  • .class:checked 应该是 .customer:checked
  • 哦,是的,对不起,但这仍然没有帮助
  • 这不是问题的答案,而是不相关的评论。解决方案在我的回答中。

标签: jquery arrays ajax each


【解决方案1】:

JSON.stringify() 将创建 ["2","5"],而不是 2,5。你应该使用

var checked = checked_arr.join(',');

或者你可以只传递数组本身:

data: {checked: checked_arr},

$.ajax 将对其进行格式化,使$_POST['checked'] 成为一个数组。

【讨论】:

  • 哦,好的,在另一边创建 php 数组最好的是什么?我不介意它在 jquery 端的外观。
  • 第二个版本最好,它会自动发生。
【解决方案2】:

您应该使用Array.prototype.join() 而不是JSON.stringify

checked =  checked_arr.join(',');

更多详情可以阅读韦恩的回答here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多