如何在单个控制器函数中调用多个视图

时间:2015-06-16 05:40:49

标签: jquery ajax codeigniter

我想在单个控制器功能中调用其他视图,并希望在单击链接时更改一个视图。

例如,当我单击about_us链接时,它应该打开about_us,当我点击contact_us链接时,应该用about_us视图替换它,但是整个视图使用jQuery和ajax保持不变。我不了解jQuery和ajax。怎么可能这样做?

我的观看代码是

<ul>
<li class="active"><a href="<?php echo site_url() ?>/about_us">About Us</a></li>
<li><a href="<?php echo site_url() ?>/contact_us">Company Profile</a></li>
<li><a href="<?php echo site_url() ?>/faq">Why Choose Jan Japan</a></li>

我的控制器是

class Home extends CI_Controller
{
    $this->load->view('include/header');
    $this->load->view('top_strip');
    $this->load->view('top_menue);
    $this->load->view('about_us');
    $this->load->view('footer');
}

3 个答案:

答案 0 :(得分:3)

查看(header.php文件):

    <ul>
    <li class="active"><a href="<?php echo site_url() ?>/about_us" onclick="loadaboutus()">About Us</a></li>
    <li><a href="<?php echo site_url() ?>/contact_us">Company Profile</a></li>
    <li><a href="<?php echo site_url() ?>/faq">Why Choose Jan Japan</a></li>
</ul>

<div id="divDynamic"></div>

在这个视图中我写了内联JavaScript

  

的onclick = “loadaboutus()”

在标签内。因此,当用户点击“关于我们”链接时,javascript的loadaboutus()函数将调用控制器的loadaboutus()函数。

Javascript的Ajax的:

function loadaboutus()
{
$.ajax({
                type: "POST",
                url: "<?php echo base_url(); ?>home/loadaboutus",
                success: function (data) {
                   $('#divDynamic').html(data);
                }
            });
}

控制器:

function loadaboutus()
{
  $this->load->view('about_us');
}

答案 1 :(得分:1)

您有三个链接:

  1. /家
  2. / CONTACT_US
  3. /常见问题
  4. 这是三个独立的控制器。单击链接后,将重新加载页面。

    所以你需要三个控制器。

    class Home extends CI_Controller
    {
        public function index()
        {
            $this->load->view('include/header');
            $this->load->view('top_strip');
            $this->load->view('top_menu');
            $this->load->view('home_page');
            $this->load->view('footer');
        }
    }
    
    class About_us extends CI_Controller
    {
        public function index()
        {
            $this->load->view('include/header');
            $this->load->view('top_strip');
            $this->load->view('top_menu');
            $this->load->view('about_us');
            $this->load->view('footer');
        }
    }
    
    class Contact_us extends CI_Controller
    {
        public function index()
        {
            $this->load->view('include/header');
            $this->load->view('top_strip');
            $this->load->view('top_menu');
            $this->load->view('contact_us');
            $this->load->view('footer');
        }
    }
    

    这可能不是理想的做法,但是因为你是一个新的,这是一个很好的学习步骤。

答案 2 :(得分:0)

为此你必须使用以下代码制作一个公共文件template.php:

   foreach ($views as $view) {
      $this->load->view($view);
   }

现在从控制器调用它:

只需执行以下操作:

public function index()
    {
        $data=array('view1'=>"include/header",
                    'view2'=>"top_strip",
                    'view3'=>"top_menu",
                    'view4'=>"contact_us",
                    'view5'=>"footer"
          );
        $this->load->view('template',$data);
    }