在jQuery中通过ajax发送多维复选框数组

Posted

技术标签:

【中文标题】在jQuery中通过ajax发送多维复选框数组【英文标题】:Sending multidimensional checkbox array via ajax in jQuery 【发布时间】:2021-06-01 08:08:12 【问题描述】:

我正在尝试使用复选框将多维数组值发布到服务器端。但不幸的是无法弄清楚使用复选框的方法。

我尝试做的是使用 ajax 发布 ID (NAME, VALUE),但只发送一个数组。

 <input type="hidden" id="addon_id" value="8"> //value is dynamic
 <input type="checkbox"  name='addon[]' value="1.99"  title="Item 1"> //value and title are dynamic
 <input type="checkbox"  name='addon[]' value="5.99"  title="Item 2"> 
 <input type="checkbox"  name='addon[]' value="3.99"  title="Item 3"> 

jQuery

var addon = [];

   $.each($("input[name='addon[]']"), function() 
        if ($(this).is(":checked")) 
            addon.push($(this).val());
        
    );

    $.ajax(
      url: '<?php echo site_url('cart/add_to_cart'); ?>',
      type: 'POST',
      data: 
        addon_id: addon_id,
        addon: addon
      ,
      dataType: "JSON",
      success: function(response) 

        //response

      
    );

当前发送格式

[addon] => Array
        (
            [0] => 1.99
            [1] => 5.00
            [2] => 3.89
        )

数组格式尝试发送

 Array
   (
       
    [8] =>  Array(
                     [0] =>  Array( 
                                    [name] => ITEM 1
                                    [price] => 1.99
                                  )

                     [1] =>  Array( 
                                    [name] => ITEM 2
                                    [price] => 5.99
                                  ) 
  
                     [2] =>  Array( 
                                    [name] => ITEM 3
                                    [price] => 3.99
                                  )     

                        
                    )
        

  )

JSON

"8":
      "0": 
            "name":"ITEM 1",
           "price":"1.99"
          ,
      "1": 
            "name":"ITEM 2",
            "price":"5.99"
          ,
      "2": 
        "name":"ITEM 3",
        "price":"3.99"
           
        
    

【问题讨论】:

你的输出不清楚,你想要一个json?所以你能用json格式的键名显示你想要的json吗 刷新页面看看吧 【参考方案1】:

对于循环,您必须将两个值都包含在一个数组中:

  $.each($("input[name='addon[]']"), function() 
        if ($(this).is(":checked")) 
            addon.push("name":$(this).attr("title"), "price":$(this).val());
        
    );

【讨论】:

以上是关于在jQuery中通过ajax发送多维复选框数组的主要内容,如果未能解决你的问题,请参考以下文章

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

jQuery 将多维表单数据发送到 PHP 脚本

通过 jQuery ajax() 向 PHP 发送多个复选框数据

如何使用 jquery ajax 将选中复选框的值发送到另一个页面

通过 Ajax 将多个复选框传递给 PHP

ajax调用后,jquery mobile在复选框上没有样式