使用CodeIgniter和jQuery(AJAX)的单页网站

时间:2009-12-07 18:29:49

标签: php javascript jquery ajax codeigniter

我希望建立一个单页网站,该网站在PHP(显然使用CodeIgniter)和AJAX(由jQuery支持)上运行,目前我有一个菜单从数据库填充,取决于选择什么catergories在线,然后使用这些结果建立一个网址,

if(isset($main_menu)) {
    foreach($main_menu as $row) {
        print "<li><a href='index.php/home/category/$row->category_id'>$row->category_name</a></li>";
    }
}

我的问题是,为此,我需要从控制器(主页)运行所有查询,因为用户永远不会离开页面,实际上我想要发生的是,如果用户点击例如{{1}我希望运行一个查询,从数据库中的内容表中选择与博客类别相关的所有内容,然后我想在我的网站Blog中以手风琴风格显示它。然后,如果用户选择例如灵感,则查询再次运行,并将灵感数据添加到与博客数据相同的div中,但是以自己的手风琴而不是覆盖博客数据。

是否可以跟随,更重要的是可能,以及我将在何处开始,我可以使用right-content divCodeIgniter,并且真的想要推动这些技术和我自己。

由于

2 个答案:

答案 0 :(得分:2)

我不知道codeigniter,但我认为这在大多数mvc情况下都是类似的。您可以在哪里使用方法返回对AJAX请求的响应。

这是Ruby和Prototype,但你应该明白这一点。

控制器:

def get_blog
  # find stuff
  # render or just return either js or json or xml or whatever
end

使用Javascript:

new Ajax.Request('http://yourdomain.com/get-blog', {
  onSuccess: function(response) {
    // do something with your response data
  }
});

我道歉它不是用PHP。

答案 1 :(得分:1)

您只需要使用AJAX调用来引用独特的控制器以保持MVC分离。这将允许您保持后端代码可维护,同时给出单一首页的外观。您需要确保控制器AJAX响应不会生成任何视图数据,以将开销降至最低。

您甚至可以将视图数据加载为partials并将字符串作为AJAX响应返回。

您可以使用任意数量的控制器/模型组合来支持您的AJAX请求,例如:

  1. / blog / unique-blog-identifier(博客控制器,索引方法,unique-blog-identifier first param)
  2. / news / unique-news-identifier(新闻控制器,索引方法,unique-blog-identifier first param)