0

2つの選択ボックスがあります。オプションを選択すると、オプションに従って結果が表示され、結果が2番目の選択ボックスに表示されます。これどうやってするの?関数を実行する必要があると思いますonchangeが、JavaScriptでコントローラーからデータを取得する方法がわかりません。

class StockInController extends MY_Controller {
    function index(){
        $data['main_content'] = 'stockInView';

        $this->load->model('supplierModel');
        $query = $this->supplierModel->getAllSuppliers();

        if ($query){
            $data['records1'] = $query; 
        } 

        $this->load->model('categoryModel');
        $query = $this->categoryModel->getAllCategories();

        if ($query){
            $data['records2'] = $query;
        }

        $this->load->model('itemsModel');
        $query = $this->itemsModel->getAllItems();

        if ($query){
            $data['records3'] = $query;

        }
        $this->load->view('dashboardTemplate/template',$data); 
    }

    function addStockIn(){
        //getting parameters from view 
        $data = array(
            'item_name' => $this->input->post('item_name'),
            'cat_id' => $this->input->post('cat_id')        
        );

        //$is_ajax = $this->input->post('ajax'); //or use this line
        //$this->input->is_ajax_request();

        $result = array();
        $this->load->model('stockInModel'); 
        $query = $this->stockInModel->addStocktoDB($data);

        if ($query){  //&& any other condition
            $result['res'] = 1;//process successful - replace 1 with any message
        } else {
            $result['res'] = 0;//process failed - replace 0 with any message
        }
        echo json_encode($result);//at the end of the function.
    }
}

ビューは次のとおりです。

<div class="control-group">
    <label for="selsear" class="control-label">Select a Category</label>
    <div class="controls">
         <select name="select1" id="seslsear" class='cho'>
            <option id = "y" value="0">--Select--</option>
            <?php foreach($records2 as $r) { ?>
            <option value="<?=$r->cat_id?>"><?=$r->cat_name?></option>
            <?php } ?>
        </select>
    </div>
</div>

<div class="control-group">
    <label for="selsear" class="control-label">Select an item</label>
    <div class="controls">
        <select name="select1" id="selsear" class='cho'>
            <option id = "y" value="0">--Select--</option>
            <?php foreach($records3 as $r) { ?>
            <option value="<?=$r->item_id?>"><?=$r->item_name?></option>
            <?php } ?>
        </select>
    </div>
</div>      
4

1 に答える 1

-1

ajaxの成功では、選択ボックスとフィードデータの変更時に関数を作成する必要があります

$('#selsear').change(function() {

 var form_data = {
    item_name: $('#item_name').val(),
    cat_id: $('#selsear').val()
 };

$.ajax({
       url:'controller_name/function_name',
       data:form_data,    
       datatype:'application/json',
       success:function(data){
           $.each(data,function(i){
                          htmlString="<option value='"+data[i]['item_id']+"'>'"+data[i]['item_name']+"'</option>"
           });
           $("#selsear").html(htmlString);
       }
});

コントローラー関数名は、コントローラーからデータを取得する関数の名前です。

これがお役に立てば幸いです!

于 2013-01-12T13:22:37.670 に答える