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

Posted

技术标签:

【中文标题】jQuery 将多维表单数据发送到 PHP 脚本【英文标题】:jQuery send multidimensional form data to PHP script 【发布时间】:2020-08-29 22:31:01 【问题描述】:

我使用 jquery 进行后期操作。我有多个复选框,如下所示。我想发布一个多维数组,但我的操作失败了。当我认为有 javascript 错误时,我在哪里做错了?

<input type="checkbox" name="options[0][menu][1]" checked="" autocomplete="off" value="Mantar">
<input type="checkbox" name="options[1][menu][1]" checked="" autocomplete="off" value="Soğan">
<input type="checkbox" name="options[3][menu][1]" checked="" autocomplete="off" value="Mısır">

输入结构

<?php foreach ($gercek_dizi as $key => $value)  ?>
<input class="form-control menu" type="hidden" id="menu[<?php echo $keys[1]; ?>]" name="menu[<?php echo $keys[1]; ?>]" value="Ürün <?php echo $keys[1]; ?>" >

<?php $a=0; foreach ($value as $ky => $cek)  $a++;?>
                        <li class="col-md-2 list-group-item mr-60">
                          <div class="btn-group-toggle pd-5" data-toggle="buttons">
                            <label class="btn btn-secondary btn-xs br-30 cizgicek active"><input type="checkbox" name="options[<?php echo $ky; ?>][menu][<?php echo $keys[1]; ?>]" checked autocomplete="off" value="<?php echo $cek['menu']; ?>"/> <?php echo $cek['menu']; ?> </label>
                          </div>
                        </li>
                      <?php  ?>
<?php  ?>

如上所述,我将数组保留在名称中。我想发布这个,但 options[] 字段刚刚发布。 name = "options[0][menu][1]"我怎样才能完整地发布这个部分?

   $('.add_cart').click(function()
    var csrfName = $('.txt_csrfname').attr('name');
    var csrfHash = $('.txt_csrfname').val();
    var product_id      = $(this).data("productid");
    var product_name    = $(this).data("productname");
    var product_price   = $(this).data("price");
    var quantity        = $('#' + product_id).val();
    var image           = $(this).data("image");
    var options         = [];
    var resimli         = [];
    var coklu           = [];
    var menu            = [];
    $(':checkbox:checked').each(function(i)
      options[i] = $(this).val();
    );

    $('input.menu').each(function(i)
      menu[i] = $(this).val();
    );
    $('select option:selected').each(function(i)
      coklu[i] = $(this).val();
    );
    $(':radio:checked').each(function(i)
      resimli[i] = $(this).val();
    );
    if(quantity != '' && quantity > 0)
    
     $.ajax(
      url:"<?php echo base_url(); ?>cart_controller/add",
      method:"POST",
      data:product_id:product_id, product_name:product_name, product_price:product_price, quantity:quantity, menu:menu, options:options, coklu:coklu, resimli:resimli, image:image, [csrfName]:csrfHash,
      dataType: 'json',
      success:function(response)
      
       $('.txt_csrfname').val(response.token);
       iziToast.success(
        title: 'Sepete Eklendi',
        message: 'Ürün Sepetinize Eklendi!',
        position: 'topRight',
      );
       $('.sepetim').load("<?php echo base_url(); ?>cart_controller/sepet");
       $('.sepetsay').load("<?php echo base_url(); ?>cart_controller/sepetsay");
     
   );
   
   else
   
     iziToast.error(
      title: 'Dikkat!',
      message: 'Lütfen Ürün Adetini Seçin!',
      position: 'topRight',
    )
   
 );

结果选项名称;

Array ( [0] => Mantar [1] => Zeytin [2] => Domates [3] => Mısır [4] => Turşu ) 

我想要的结果;

Array ( [1] => Array ( [menu] => Array ( [1] => Mantar ) ) [2] => Array ( [menu] => Array ( [1] => Zeytin ) ) [3] => Array ( [menu] => Array ( [1] => Domates ) ) [4] => Array ( [menu] => Array ( [2] => Mısır ) ) [5] => Array ( [menu] => Array ( [2] => Turşu ) 

【问题讨论】:

嘿 :( 为什么没人回答 【参考方案1】:

@Wawam 编辑

$(':checkbox:checked').each(function(i)
      options.push(menu:  1: $(this).val() );
);

添加属性输入

data-menuid="2"
$(':checkbox:checked').each(function(i)
      options.push(menu:  [$(this).data("menuid")]: $(this).val() );
    );

【讨论】:

是的,我会这么说。【参考方案2】:

当你这样做时:

options[i] = $(this).val();

你失去了多维的结构。

你可以试试这样的:

$(':checkbox:checked').each(function(i)
      options.push(menu:  1: $(this).val() );
);

【讨论】:

menu: 1: - 这不是一个常数,我该如何改变它? menu[1] 像 menu[2] 一样变化。 要回答,我需要更多的 html 示例。我不明白表单的结构。 我如你所愿 对不起,我有一个小时没电脑了……我过了这个时间就回来了。

以上是关于jQuery 将多维表单数据发送到 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 mail() PHP 脚本的 jQuery AJAX 表单发送电子邮件,但来自 HTML 表单的 POST 数据未定义

PHP:将表单数据发送到 php 脚本,然后将数据发布到另一个表单处理器,如 zapier.com?

动态 jQuery PHP 表单不会将 POST 数据发送到 PHP var

有人可以将来自不同主机的表单数据发送到我的 PHP 脚本,该脚本将获取的数据插入 MySQL 吗?如果是这样,我们如何保护它?

$.post 不向 php 脚本发送数据

将php多维数组输出到html表