需要Codeigniter ajax信息

问题描述:

我是Codeigniter的初学者。这将是我第一次使用Ajax。当我点击导航链接时,我只想要“内容”部分更改。我需要学习如何在我的网站中使用ajax。需要Codeigniter 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使阿贾克斯。在此之后要做什么?我如何在视图中启用帖子?

编辑:我做了一些关于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> 
...... 

我已经写在头部分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

我不确定我理解你的问题:S – 2012-08-04 19:17:34

+0

我做了更多解释。我之前没有使用过Ajax。我试图理解它的逻辑。 $这个 - >输入 - >后( 'some_data'); ...我如何使用导航菜单? – ytsejam 2012-08-04 19:22:11

+0

无论如何,你的代码中有什么问题?我想这会在使用AJAX时完美无瑕。 “你如何在视图中启用Ajax?',我不明白你在说什么。你在寻找jQuery代码示例吗? – Abdulaziz 2012-08-04 19:43:29

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

  • 您已经于您的JQuery设置data: Json,但它看起来像你 返回HTML,所以变化这到HTML。

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

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

  • 有在jQuery .body()没有这样的事,你要.html()或为您的成功功能完整产品线:$('#content').html(msg);。 Obviosult确保你有一个名为id =“content”的元素。然后,jQuery将用来自服务器的响应替换它,它应该是从控制器返回的纯html。您可以使用codeigniters $ this-> load-> 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)