0

我是 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,我如何将不同的页面发布为 url?

4

1 回答 1

0

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

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

  • type: post当它应该只是一个逗号时,你有一个分号

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

  • 没有.body()您想要的 JQuery 之类的东西,也没有.html()成功功能的完整行:$('#content').html(msg);. Obviosult 确保您有一个名为 id="content".JQuery 的元素然后将其替换为来自服务器的响应,该响应应该是从您的控制器返回的纯 html。您可以使用 codeigniters $this->load->view() 返回正确的文件。

其他注意事项 - 似乎您需要阅读 JQuery,尤其是ajax 函数

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

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

于 2012-08-23T12:48:40.263 回答