当从AJAX POST请求调用控制器时,如何从Codeigniter中的控制器加载视图?

时间:2015-06-19 06:02:23

标签: php jquery ajax codeigniter

我有一个视图,其中有一个AJAX POST到控制器 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
            }       
 )
});

控制器

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);
}

如何使用从数据库中获取的数据加载视图?

修改

我不想在div中加载ajax响应。我需要在窗口中加载整个视图页面。

3 个答案:

答案 0 :(得分:1)

如果你想从codeigniter控制器加载视图,请不要在这里使用AJAX,我建议你像这样修改你的HTML:

<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>

你的jquery代码是这样的,这样你可以在更改选择框时直接提交表单,然后动作转到CI控制器:

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

您的CI家庭控制器:

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);
}

答案 1 :(得分:0)

$('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);
      }
  });
});

我认为这会有所帮助

答案 2 :(得分:0)

您需要根据回复更新html。例如,您想要在div中使用ID为container的响应集。你可以这样做

<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});       
});