drn1008
2015-06-19 06:02
浏览 75
已采纳

当从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.

图片转代码服务由CSDN问答提供 功能建议

我有一个视图,它有一个到控制器的AJAX POST list_products_of_company

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

控制器

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

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

编辑:

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douji1999 2016-11-14 16:20
    已采纳

    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);
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dongshi4078 2015-06-20 20:14
    $('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

    评论
    解决 无用
    打赏 举报
  • duandu1915 2015-06-20 20:30

    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});       
    });
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题