我想在单个控制器功能中调用其他视图,并希望在单击链接时更改一个视图。
例如,当我单击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');
}
答案 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)
您有三个链接:
这是三个独立的控制器。单击链接后,将重新加载页面。
所以你需要三个控制器。
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);
}