传递多个文本框的值来控制器代码点火器(pass multiple textbox values to

2019-10-28 14:14发布

我在新手笨 ,所以我不知道如何做到这一点。
其实我的看法页面有我产生过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'),

            );

Answer 1:

在你的情况下,将name您的inputselect的元素像这样cat_ids[] item_ids[] prices[]quantities[] 注意[]这些名称的末尾(我已经改变了名称,使之在复数形式,这只是一个名称约定:))。

在控制器$this->input->post('cat_ids')会返回一个数组名为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],
    );
}

要在阿贾克斯发送表单数据使用jQuery的你可以设置你form_data=$('your-form-id').serialize(); 而不是通过你的手建立其价值:)



Answer 2:

不知道关于PHP,但也许你可以像请求发送多个PARAMS:

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

也许这可以帮助你或其他人来帮助你



文章来源: pass multiple textbox values to controller Code igniter