Codeigniter需要ajax信息

时间:2012-08-04 18:34:28

标签: codeigniter

我是Codeigniter的初学者。这将是我第一次使用Ajax。单击导航链接时,我只想更改“内容”部分。我需要学习如何在我的网站中使用ajax。

MY_Controller.php:

class MY_Controller extends CI_Controller {

  protected $data = array();

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

   function render_page($view) {
    if( ! $this->input->is_ajax_request() )
    {
      //do this to don't repeat in all controllers...
      $this->load->view('templates/header', $this->data);
      //menu_data must contain the structure of the menu...
      //you can populate it from database or helper
    }

    $this->load->view($view, $this->data);

    if( ! $this->input->is_ajax_request() )
    {
     $this->load->view('templates/menu');
     $this->load->view('templates/footer', $this->data);
    }
  } 

我的家/关于控制器查看功能:

    public function view($page = 'home')
    {
     $this->load->helper('text');
        $this->data['records']= $this->services_model->getAll();
        if ( ! file_exists('application/views/pages/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $data['title'] = ucfirst($page); // Capitalize the first letter


        $this->render_page('pages/'.$page,$data);


    }

我想,我可以在MY_Controller.php中启用ajax。这之后该怎么办?我如何在视图中启用帖子?

编辑:我对jquery和ajax进行了更多的研究。 这是html的导航菜单部分:

    <div id="sidebar-content">
    <ul id="menu">
    <li class="current"><a href="<?php echo site_url('home'); ?>">ANASAYFA</a></li>
    <li><a href="<?php echo site_url('about'); ?>">HAKKIMIZDA</a></li>
......

我在head部分编写了ajax.js文件:

//导航

$("#sidebar-content ul li a").click( function(){     
        $.ajax({
                    url: "<?php echo site_url('about'); ?>",
                    type: 'POST';
                    data: JSON,
                    success: function(msg) {
                        $('#content').body(msg);
                    }
                });
                });

        return false;
});  

你能改进我的代码吗?还有一个问题是:如果我在头部使用ajax,我如何将不同的页面作为网址发布?

1 个答案:

答案 0 :(得分:0)

你的问题有点模棱两可,但这里有一些我可以用你的JQuery看到的问题:

  • 您已在JQuery中设置data: Json,但它看起来像你 返回HTML,因此将其更改为HTML。

  • type: post之后你有一个半冒号,它应该只是一个 逗号

  • 网址指向控制器,而不是方法。将其更改为"<?php echo site_url('about/view'); ?>",

  • 没有JQuery .body(),你想要.html()或成功函数的完整行:$('#content').html(msg);。 Obviosult确保你有一个名为id =“content”的元素.JQuery将用来自服务器的响应替换它,这应该是从你的控制器返回的纯html。您可以使用codeigniters $ this-&gt; load-&gt; view()来返回正确的文件。

其他说明 - 您似乎需要阅读JQuery,尤其是ajax function

以下是关于将Ajax与CI一起使用的好教程 - http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-day-8-ajax/

最后,使用Chrome开发者工具网络检查器中的控制台和网络功能,或者以这种方式获取Firebug for Firefox,您可以看到js错误并监控ajax请求(XHR)