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 吗?如果是这样,我们如何保护它?