CodeIgniter中的AJAX加载页眉和页脚源代码

时间:2014-11-08 03:43:11

标签: php ajax codeigniter

首先抱歉,如果我的英语不完美,但我想你会理解我的观点。

我想做什么:

使用此模板订单的简单网站:

  • 的header.php
  • nav.php
  • {ajax的动态内容}
  • footer.php

问题:

在第一页加载所有源代码完美(标题,导航,内容和页脚),但当我使用菜单加载另一个内容使用ajax头,导航和页脚消息只从源代码。

我知道为什么会这样,但我不知道如何解决,请看下面的代码

AJAX菜单

$(function(){
    $("a[rel='tab']").click(function(e){
        e.preventDefault(); 

        $("#ajax-content").css("display", "none");
        $("#loading").css("display", "block");

        pageurl = $(this).attr('href');

        $("#ajax-content").load(pageurl, function(){
            $("#loading").css("display", "none");
            $("#ajax-content").css("display", "block");
        });

        $('a').removeClass('active');
        $(this).addClass('active');

        if(pageurl!=window.location){
            window.history.pushState({path:pageurl},'',pageurl);    
        }

        return false;  
    });
});

应用/库/ Showcontent.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Showcontent {

   function __construct() {
    $this->CI =& get_instance();
   }


   function load_content($current_page) {
        $parts = array('header', 'nav', $current_page, 'footer');
        foreach($parts as $part) {
            $this->CI->load->view($part);
        } 
   }    
}
?>

应用/配置/ autoload.php

$autoload['libraries'] = array('showcontent');

application / controllers / info.php中的控制器示例

<?php
class Info extends CI_Controller {

    public function __construct() {
        parent::__construct(); 
    } 

    function index() {
        if($this->input->is_ajax_request()) {
            $this->load->view('info');
        } else {
            $this->showcontent->load_content('info');
        } 
    }

}
?>

在application / views / info.php中查看示例

<div class="w95 center">
    <h2 class="header">Info Title</h2>
    <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
    audantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto
    beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut
    odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 
    Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
    sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat 
    Ut  enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit 
    laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit 
    qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum 
    fugiat quo voluptas nulla pariatur?</p>
</div>

所以当我转到http://localhost然后我点击信息链接到http://localhost/info我可以看到标题,导航,信息内容和页脚,好。但是,当我试图看到网络的源代码我只看到与上面的代码相同,只有info.php视图

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

这是我们遇到的一个非常普遍的问题。 只有在控制器功能中使用ajax时才始终加载视图部件。 检查你的控制器代码,你必须加载header.php和footer.php以及在AJAX请求上加载的视图。

function load_content($current_page) {
        $parts = array($current_page);
        foreach($parts as $part) {
            $this->CI->load->view($part);
        } 
   }