2013-01-19 33 views
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() 

在這裏,我沒有做正確的,第一我不知道如何讓項目的價值和類別這裏,然後另一件事是怎麼樣才能夠因爲有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> 

這裏是我的控制器textvalues獲得多個文本框的值,我不知道在這裏得到多個值也。
下面是我在做什麼的代碼,我知道我錯了,但我不知道如何作出正確

 $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

在你的情況,將您inputselect元素name像這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();,而不是通過你的手建立其價值:)

+0

然後我就試試這個,然後回答你,那麼jQuery函數這裏VAR ITEM_ID = $( '#項目')VAL()。在這裏,我做錯了,因爲我的項目ID不斷變化,並會像這樣item_0,item_1 .. 0如何在jQuery中抓住這個值? – user1972143

+0

我已經更新了我的答案,修改瞭如何獲取表單數據:) –

+0

thanksssssssss它的工作原理..你真棒.....除了數量和價格都沒有進入數據庫..所有工作正如你說的我已將價格和數量文本框的名稱更改爲價格[]和數量[] ..並且我在控制器中獲得價格和數量的價值'price'=> $ this-> input-> post('price') ..我在做對..我想我必須改變這個'價格'=> $ this-> input-> post('price []')我是對嗎? – user1972143

1

不知道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() { 

} 

});

在常規

我會分析他們像

params.cat_id 
params.item_id etc... 

也許這可以幫助你或其他人來幫助你

+0

是啊,這是令人難以置信的非常好的狗屎芽 – thegrunt

相關問題