簡體   English   中英

jQuery 發送多維表單數據到 PHP 腳本

[英]jQuery send multidimensional form data to PHP script

我使用 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 ) 

@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() }});
    });

當你這樣做時:

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

你失去了多維的結構。

你可以嘗試這樣的事情:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM