2014-11-08 87 views
0

首先對不起,如果我的英文不完美,但我想你會理解我的觀點。AJI在CodeIgniter中加載頁眉和頁腳源代碼

我想要做什麼:

簡單的網頁與此模板順序:

  • 的header.php
  • nav.php
  • {阿賈克斯動態內容}
  • 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'); 
在應用程序/視圖應用/控制器/ 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'); 
     } 
    } 

} 
?> 

查看示例/ 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視圖

感謝您的時間!

回答

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

不知道它的工作原理becouse我現在用的Laravel而不是笨,但感謝您的回答,我有同樣的問題,但現在用刀片模板在這裏Laravel。 – aluknot 2014-11-26 23:26:27