首页 文章

将多个文本框值传递给控制器代码点火器

提问于
浏览
0

我是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'),

            );

2 回答

  • 0

    在您的情况下,设置 inputselect 元素的 name ,如 cat_ids[]item_ids[]prices[]quantities[] . 注意这些名称末尾的 [] (我已将名称更改为复数形式,这只是一个名称约定:)) .

    在控制器 $this->input->post('cat_ids') 将返回 array 名为 cat_id 并包含所有id,这与 $this->input->post('item_ids')$this->input->post('prices') 相同,...您可以使用这样的 for 循环遍历所有发布的值:

    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],
        );
    }
    

    要在Ajax中使用jQuery发送表单数据,您可以设置 form_data=$('your-form-id').serialize(); 而不是用手来构建它的值:)

  • 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...
    

    也许这可以帮助你或某人帮助你

相关问题