2012-02-20 102 views
-1

我需要用CodeIgniter構建一些ajax選項卡。我遇到的問題是我需要存儲在1個選項卡中的大量信息,並且每個選項卡中的信息都不相同,因此我無法使用模板HTML並僅使用不同的值填充數據。提供標記的設計師將其設置爲隱藏每個html部分。 所以我的問題是我應該怎麼做呢?獲取每個ajax調用所需的值,並通過上下文填充每個選項卡,或者爲每個選項卡加載單個頁面。因此,html和數據位於不同的頁面上。我試圖在CodeIgniter中這樣做,但我無法在MVC上下文中做到這一點。codeigniter ajax標籤

+0

我已經嘗試加載所有的頁面,但無法做到這一點,從ajax控制器加載整個頁面 – Mythriel 2012-02-20 09:17:34

回答

0

解決方案1.通過Codeigniter控制器加載所有數據,並使用Javascript顯示/隱藏選項卡。 當禁用JS時:在一個頁面上顯示所有數據

解決方案2.通過ajax爲每次點擊顯示一個選項卡調用服務器,然後調用控制器。 爲了能夠從JavaScript調用一個控制器,你需要的基本URL: http://www.jigniter.com/use-your-site-url-or-base-url-in-javascript-functions/comment-page-1/#comment-654

$.getJSON(CI.base_url + 'controller/method/', function(data) { 
// ... 
} 

或使用絡合劑東西阿賈克斯$。 當禁用JS時:每次單擊都會加載一個新視圖。

首先建立這個沒有JS,然後覆蓋它。

0

您可以直接從控制器加載所有信息並將數據傳遞到主視圖。 笨的視圖做到這一點提供了3個參數:

$string = $this->load->view('myfile', '', true); 
在這種情況下,你有MYFILE到$字符串的所有數據

您可以將數據放入與模板分離的視圖中,然後加載它。

例如:

$info_tab['first_tab'] = $this->load->view('first_tab_content', '', true); 
$info_tab['second_tab'] = $this->load->view('second_tab_content', '', true); 
$this->load->view('html_template',$info_tab); 
這樣

您在視圖中的兩個新的變量。

0

執行此操作的最佳方法是使用條件語句加載部分視圖(通過將加載部分視圖作爲第三個視圖參數傳遞給您一個字符串)。 Tab1可能需要滿足0條件,tab2可能需要滿足2個條件等等。最好的選擇可能是使用HMVC插件。

<ul class="tabs"> 
    <li><a href="#tab-one">Tab One</a></li> 
    <li><a href="#tab-two">Tab Two</a></li> 
    <li><a href="#tab-three">Tab Three</a></li> 
</ul> 

-

<div id="tab-one" class="tab-content"> 
    <?php echo Modules::run('module/tab_one'); ?> 
</div> 
<div id="tab-two" class="tab-content"> 
    <?php echo Modules::run('module/tab_two'); ?> 
</div> 
<div id="tab-three" class="tab-content"> 
    <?php echo Modules::run('module/tab_three'); ?> 
</div> 

-

public function tab_one(){ 
    $this->load->view('module/partials/view_one', array(), false) 
} 

-

view_one

PHP 
    if(condition_is_meet): 
    // do something 
PHP 
    else: 
    //do something else 
PHP 
    endif;