[英]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.