Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过jQuery序列化多个复选框值?_Javascript_Jquery_Post_Jquery Post - Fatal编程技术网

Javascript 如何通过jQuery序列化多个复选框值?

Javascript 如何通过jQuery序列化多个复选框值?,javascript,jquery,post,jquery-post,Javascript,Jquery,Post,Jquery Post,我修改了as的简单示例 这适用于带有val()的单个复选框,但不适用于中的多个复选框 <input type="checkbox" name="tick" value="'.$value.'" /> 因为serialize()应该生成ticks:term用作term中的term。post` 如何使序列化()为$生成适当的数据。post 注意:我不想序列化整个表单,只想序列化复选框输入的选中值。您可以使用.serializeArray() 参考:简单值收集器:) HTML PHP

我修改了as的简单示例

这适用于带有
val()
的单个复选框,但不适用于中的多个复选框

<input type="checkbox" name="tick" value="'.$value.'" />

因为
serialize()应该生成
ticks:term
用作
term
中的
term
。post`

如何使
序列化()
$生成适当的数据。post


注意:我不想序列化整个表单,只想序列化复选框输入的选中值。

您可以使用.serializeArray() 参考:

简单值收集器:) HTML

PHP


在html代码中,在
name=“tick”
name=“tick[]”中更改
name=“tick”
,您可以简单地使用
$(this).serialize()
发布所有选中的值。

您仍然可以使用
.serializeArray
并在
.post()中使用它,如下所示:

var postData = {};
var form = $('#formId').serializeArray();
for (var i = 0; i < form.length; i++) {
    if (form[i]['name'].endsWith('[]')) {
        var name = form[i]['name'];
        name = name.substring(0, name.length - 2);
        if (!(name in postData)) {
            postData[name] = [];
        }
        postData[name].push(form[i]['value']);
    } else {
        postData[form[i]['name']] = form[i]['value'];
    }
}

$.post('/endpoint', postData, function(response) {

}, 'json');
var postData={};
var form=$('#formId').serializeArray();
对于(变量i=0;i
postData
将包含除禁用的表单元素之外的所有表单元素。所有复选框值都将作为数组传递,就像进行普通表单提交时一样

let $form = $(".js-my-form");
let $disabled = $form.find(':input:disabled').removeAttr('disabled');
let formData = {};
$.each($form.serializeArray(), function (index, fieldData) {
    if (fieldData.name.endsWith('[]')) {
        let name = fieldData.name.substring(0, fieldData.name.length - 2);
        if (!(name in formData)) {
            formData[name] = [];
        }
        formData[name].push(fieldData.value);
    } else {
        formData[fieldData.name] = fieldData.value;
    }
});
$disabled.attr('disabled', 'disabled');
console.log(formData);

这是Stanimir Stoyanov answer的一个变体,可以序列化禁用的字段。

您可以将值存储在数组中,然后将其序列化。哇,这是获取多个复选框值的最简单方法!
 var checked='';
            $('.selector:checked').each(function(){
                checked=checked+','+$(this).val();
            });
 $ids=explode(',',substr($_GET['param_with_checked_values'],1));
term = $("#input[name^=tick]:checked").map(function () {
    return this.value;
}).get();
term.join();
var postData = {};
var form = $('#formId').serializeArray();
for (var i = 0; i < form.length; i++) {
    if (form[i]['name'].endsWith('[]')) {
        var name = form[i]['name'];
        name = name.substring(0, name.length - 2);
        if (!(name in postData)) {
            postData[name] = [];
        }
        postData[name].push(form[i]['value']);
    } else {
        postData[form[i]['name']] = form[i]['value'];
    }
}

$.post('/endpoint', postData, function(response) {

}, 'json');
let $form = $(".js-my-form");
let $disabled = $form.find(':input:disabled').removeAttr('disabled');
let formData = {};
$.each($form.serializeArray(), function (index, fieldData) {
    if (fieldData.name.endsWith('[]')) {
        let name = fieldData.name.substring(0, fieldData.name.length - 2);
        if (!(name in formData)) {
            formData[name] = [];
        }
        formData[name].push(fieldData.value);
    } else {
        formData[fieldData.name] = fieldData.value;
    }
});
$disabled.attr('disabled', 'disabled');
console.log(formData);