将数组中的单个复选框值发送到服务器

Send single CheckBox value in array to server

本文关键字:服务器 复选框 数组 单个      更新时间:2023-09-26

我在表单上有多个复选框,我要提交表单。

  $.fn.serializeObject = function () {
        'use strict';
        debugger;
        var result = {};
        var extend = function (i, element) {
            var node = result[element.name];
            // If node with same name exists already, need to convert it to an array as it
            // is a multi-value field (i.e., checkboxes)
            if ('undefined' !== typeof node && node !== null) {
                if ($.isArray(node)) {
                    node.push(element.value);
                } else {
                    result[element.name] = [node, element.value];
                }
            } else {
                result[element.name] = element.value;
            }
        };
        $.each(this.serializeArray(), extend);
        return result;
    };

和代码类似于

  var that = $(this);
  var temp = $(JSON.stringify());
  form_data = that.serializeObject(temp);
  form_data = JSON.stringify(form_data);

一切都很好,但如果我选中一个复选框,那么值就像"checkboxName":"value1"如果我选择checkboc的多个值,那么这个值就像"checkboxName":["value1","value2","value3"]

我希望单个值也应该以数组格式选择,即"checkboxName":["value1"]

如果您尝试:

$.fn.serializeObject = function () {
    'use strict';
    debugger;
    var result = {};
    var extend = function (i, element) {
        var node = result[element.name];
        // If node with same name exists already, need to convert it to an array as it
        // is a multi-value field (i.e., checkboxes)
        if ('undefined' !== typeof node && node !== null) {
            if ($.isArray(node)) {
                node.push(element.value);
            } else {
                result[element.name] = [node, element.value];
            }
        } else {
            //Here you are the checkbox condition
            if(element.tagName == "INPUT" && element.getAttribute("type") == "checkbox") {
                  result [element.name] = [element.value];
            } else {
                  result[element.name] = element.value;
            }
        }
    };
    $.each(this.serializeArray(), extend);
    return result;
};