简体   繁体   中英

codeigniter drop down value send view to controller and display results

I am working with codeigniter project and I have a problem. I have tried several times but still not have a solution.

My view has dropdown box. It populate with data. I need to send selected drop-down value to controller then to model. without refreshing view

my View. : <?php echo base_url(); ?>admin/order/new_order <?php echo base_url(); ?>admin/order/new_order

<form method="post" id="sform" action="">

    <select class="form-control pull-right" name="select_design" style="width: 150px;" required id="select_design" onchange="select_design()">
        <option value="">Select Design..</option>  <?php  foreach ($product2 as $v_product) : ?>
        <option value="<?php echo $v_product->product_code ?>"><?php echo $v_product->product_code ?></option> 

<?php
    endforeach;
?> 
        </select>
    </form>

and i have tried to send selected value using ajax.

<script>

 $("#select_design").change(function() {
     $.ajax({
            url : "<?php echo base_url(); ?>admin/order/new_order", // my controller :<?php echo base_url(); ?>admin/order/new_order
            method: "POST",
            data: "id=" + $(this).val(),
            success: function(response) {
                // handle
            }
      })  
});
</script>

and i tried to access POST value in controller

controller : <?php echo base_url(); ?>admin/order/new_order() <?php echo base_url(); ?>admin/order/new_order()

public function new_order()
{
    $select_design=$this->input->post('id'); //

    // and send it to model

    $data['product'] = $this->order_model->get_all_product_info($select_design);
 }

I cant access selected value in controller, please advice. thank you

I think You just need to change your Ajax script to something like below code.

  $("#select_design").change(function() {
  var product_code = $("#select_design").val();
  $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>" + "admin/order/neworder",
        dataType:'text',
        data:{product_code:product_code},
        success: function() {
        //handle
        }
      });//ajax
 });

AJAX Should be

<script>
    $(function(){
        $("#select_design").change(function()
        {
            var product_code = $("#select_design").val();

            $.ajax(
                {
                    type:"post",
                    url: "<?php echo base_url(); ?>admin/order/new_order",
                    data:{ product_code:product_code},

                    success:function(data)
                    {

                    }
                });
        });
    });
</script>

your url conatin admin/order/new_order
so it measn order contoller is inside admin folder

and in contoller should be

public function new_order()
{
    $select_design=$this->input->post('product_code'); // not id

    $data['product'] = $this->order_model->get_all_product_info($select_design);
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM