我使用codeigniter
和jquery
例如,如果选中input#1
,则必须获取input#menu-1
的值
如果input#2
被选中,我得到input#menu-2
的值...
即使所有内容都已选中
我试过的:
<form id="form">
<h2 class="text-uppercase font-weight-light">votre choix : </h2>
<div class="flex-row">
<input type="checkbox" id="1">
<label for="menu-1">item 1<span class="font-weight-bold">($ 500 )</span> x
</label>
<input id="menu-1" type="number" class="min" maxlength="2" value="1">
</div>
<div class="flex-row">
<input type="checkbox" id="2">
<label for="menu-2">item 2<span class="font-weight-bold">(2500 FCFA)</span> x
</label>
<input id="menu-2" type="number" class="min" maxlength="2" value="0">
</div>
<button id="next-1" type="submit" class="btn border border-secondary p-2">COMMANDER</button>
</form>
我尝试过:
$('#next-1').click(function (e) {
e.preventDefault();
var form = $("#form").serialize();
$.ajax({
url: '<?php echo base_url("index.php/user/process") ?>'
method: 'POST',
data: form,
dataType: 'json',
success: function (reponse) {
}
});
});
我的控制器:
public function process()
{
if ($this->input->is_ajax_request()) {
$data = $this->input->post();
echo json_encode($data);
}
}
但是我没有值,所以它不起作用
答案 0 :(得分:2)
因为您在输入中缺少名称属性。试试这个
<input id="menu-1" type="number" class="min" maxlength="2" value="1" name="menu-1"> // check here name attribute at last.
表单序列化从名称属性中获取值。
在您的JavaScript中
$("#form").click(function (e) {
let form = $(this);
//for data filtering
var serializedReturn = form.find('input[name!=menu-1]').serialize(); // here menu-1 be removed.
console.log(serializedReturn, 'value');
e.preventDefault();
});