我是Codeigniter的新手,所以我不知道该怎么做 实际上我的视图页面有五行,我通过for循环生成,其中每行包含两个选择框和两个输入框。我不知道如何首先在 jQuery 中获取这些值,然后传递给控制器。实际上我知道如何从一个简单的文本框中获取值,但是因为我在循环中生成它们并给它们一个单独的id,所以我不知道如何在jQuery中获取值然后传递给控制器。
这是我的观点
<tr>
<th>Category:</th>
<th>Items:</th>
<th>Selling Price:</th>
<th>quantity:</th>
</tr>
<?php for ($i = 0; $i < 5; $i++) {
?>
<tr> //Categories
<td><?php echo form_dropdown('cat_id', $records2, '#',
"id='category_".$i."' onchange='getItems(this.value,".$i.")' ");?>
</td>
<!-- Items -->
<td>form_dropdown('item_id', $records3, '#', "id='items_".$i."'"); ?> </td>
<!-- end of Items -->
<td> <?php echo form_input($price); ?></td>
<td><?php echo form_input($quantity); }?></td>
项目选项基于类别选择,意味着如果我从类别中选择一些选项,那么针对类别的项目将显示在第二个选择框中。
这是我的Javascript,用于前两个选择框的功能
<script type="text/javascript">
function getItems(category_id,index) {
$("#items_" + index + " > option").remove();
$.ajax({
type: "POST",
url: "stockInController/get_Items/"+category_id,
success: function(items)
{
$.each(items,function(item_id,item_name)
{
var opt = $('<option />');
opt.val(item_id);
opt.text(item_name);
$('#items_'+ index).append(opt);
});
}
});
}
</script>
现在问题在这里;我想从所有行中获取值,然后传递给控制器 这是用于捕获然后将值发送到控制器
的javascript <script type="text/javascript">
$('#btns').click(function() { // $("#form").serialize()
在这里,我做得不对,首先我不知道如何获取项目和类别的值,然后另一件事是如何能够获得多个文本框值,因为有五行和textvalues其中填写的值将被发送
var item_id = $('#items').val();
var item_id = $('#items').val();
var price = $('#price').val();
var quantity = $('#quantity').val();
var form_data = {
cat_id: $('#cat_id').val(),
quantity: $('#quantity').val(),
item_id: $('#items').val(),
};
$.ajax({
url: "<?php echo site_url('salesController/addSales'); ?>",
type: 'POST',
data: form_data,
dataType: 'json',
success: function(msg) {
if(msg.res == 1)
{
alert("true");
}
else{
alert("false");
}
}
});
return false;
});
</script>
这是我的控制器,我不知道这里也会得到多个值 这是我正在做的代码,我知道我错了,但我不知道如何做对
$data = array(
'cat_id' => $this->input->post('cat_id'),
'item_id' => $this->input->post('item_id'),
'price' => $this->input->post('sales_date'),
'quantity' => $this->input->post('sales_bill_no'),
);
答案 0 :(得分:1)
不知道php,但也许你可以在请求中发送多个参数:
var cat_id = $('#cat_id').val();
var quantity = $('#quantity').val();
var item_id = $('#items').val();
$.ajax({
url: "<?php echo site_url('salesController/addSales'); ?>",
type: 'POST',
data: 'cat_id='+cat_id+'&quantity='+quantity+'&item_id='+item_id,
success: function() {
}
});
在groovy中我会像
那样解析它们params.cat_id
params.item_id etc...
这可能会帮助您或某人帮助您
答案 1 :(得分:0)
在您的情况下,设置name
和input
元素的select
,例如cat_ids[]
,item_ids[]
,prices[]
和{{ 1}}。请注意这些名称末尾的quantities[]
(我已将名称更改为复数形式,这只是一个名称约定:))。
在控制器中[]
将返回名为$this->input->post('cat_ids')
的数组并包含您的所有ID,cat_id
,$this->input->post('item_ids')
也是如此,...您可以使用这样的$this->input->post('prices')
循环遍历所有发布的值:
for
要在Ajax中使用jQuery发送表单数据,您可以设置for($i = 0; $i < count($data['cat_id']); $i++)
{
$yourItem = array (
'cat_id' => $data['cat_id'][$i],
'item_id' => $data['item_id'][$i],
'price' => $data['price'][$i],
'quantity' => $data['quantity'][$i],
);
}
而不是手工构建其值:)