arshad arshad - 21 days ago 5
jQuery Question

How to load a view from controller in Codeigniter when the controller is called from an AJAX POST request?

I have a view which has an AJAX POST to a controller

list_products_of_company
:

$('select.product_dimension').change(function () {
var a = "a";
var b = "b";
$.post("<?php echo base_url(); ?>home/list_products_of_company",
{
a : a, b : b
}
)
});


Controller :

function list_products_of_company(){
$a = $this->input->post('a');
$b = $this->input->post('b');
$this->data['products_of_company'] = $this->Home_model->get_products_of_company($a,$b);
$this->load->view('product_list',$this->data);
}


How do I load the view with the data that I got from the database?

Edit:

I don't want to load the ajax response inside a div. I need the entire view page to be loaded in the window.

Answer

If you want to load the view from your codeigniter controller don't use AJAX here instead I suggest you to modify your HTML like this:

<form id="form" method="post" action="action.php">
    <select name="select" id="select">
        <option value="">Select</option>
        <option value="1">One</option>
        <option value="2">Two</option>
    </select>
    <input type="submit" style="visibility:hidden;" name="sub" value="submit" />
</form>

And your jquery code like this so that you can directly submit the form on change of the select box and the action goes to the CI controller:

$(function () {
    $('#select').change(function () {
        $('#form').submit();
    });
});

And your CI home controller:

function list_products_of_company(){ 
        $a = $this->input->post('a');
        $b = $this->input->post('b');
        $this->data['products_of_company'] = $this->Home_model->get_products_of_company($a,$b);
        $this->load->view('product_list',$this->data);
}
Comments