【问题标题】:Sending multidimensional checkbox array via ajax in jQuery在jQuery中通过ajax发送多维复选框数组
【发布时间】: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吗
  • 刷新页面看看吧

标签: javascript jquery arrays ajax


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2013-04-22
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多