当从AJAX POST请求调用控制器时,如何从Codeigniter中的控制器加载视图?
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.
我有一个视图 strong>,它有一个到控制器的AJAX POST strong> 控制器 strong>: p>
如何使用从数据库中获取的数据加载视图? p>
编辑: strong> p>
我不想在div中加载ajax响应。 我需要在窗口中加载整个视图页面。 p>
div> list_products_of_company code>: p>
$('select.product_dimension')。change(function(){
var a =“a”; \ n var b =“b”;
$ .post(“&lt;?php echo base_url();?&gt; home / list_products_of_company”,
{
a:a,b:b
}
)\ n});
code> pre>
function list_products_of_company(){\ n $ a = $ this-&gt; input-&gt; post('a');
$ b = $ this-&gt; input-&gt; post('b');
$ this-&gt; data [ 'products_of_company'] = $ this-&gt; Home_model-&gt; get_products_of_company($ a,$ b);
$ this-&gt; load-&gt; view('product_list',$ this-&gt; data);
}
code> pre>
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);
}
$('select.product_dimension').change(function () {
$.ajax({
type: 'POST',
url: "<?php echo base_url(); ?>home/list_products_of_company",
dataType: 'text',
success:
function(data){
//change the id to your div id. where you want to load the view
$('#yourdivid').html(data);
}
});
});
I think this will help
You need to update your html as per response. say for example you want to response set with in div
with id container
. you can do as follows
<div id="container"></div>
$('select.product_dimension').change(function () {
var a = "a";
var b = "b";
// This will
$("#container").load("<?php echo base_url(); ?>home/list_products_of_company",
{a : a, b : b});
});