2012-02-20 88 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;