0

私はCodeigniterの初心者なので、これを行う方法がわかりません。
実際、私のビュー ページには 5 つの行があり、各行には 2 つの選択ボックスと 2 つの入力ボックスが含まれる 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>

項目のオプションはカテゴリの選択に基づいています。つまり、カテゴリからオプションを選択すると、カテゴリに対する項目が 2 番目の選択ボックスに表示されます。

これは、上位2つの選択ボックスの機能のための私の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()

ここで、私は正しいことをしていません。まず、ここで項目とカテゴリの値を取得する方法がわかりません。次に、5 つの行があるため、複数のテキスト ボックスの値を取得する方法がわかりません。満たされています 送信されます

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

            );
4

2 に答える 2

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

たぶん、これはあなたや誰かがあなたを助けるのに役立ちます

于 2013-01-19T13:10:12.377 に答える
0

あなたの場合、この、、およびのようにおよび要素の を設定しnameます。これらの名前の末尾に注意してください(複数形にするために名前を変更しました。これは単なる命名規則です:))。inputselectcat_ids[]item_ids[]prices[]quantities[][]

コントローラーでは、名前が付けられ、すべての ID を含む配列$this->input->post('cat_ids')が返されます。cat_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();、その値を手動で作成する代わりに設定できます:)

于 2013-01-19T13:07:03.387 に答える