2012-08-04 92 views
0

我是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

回答

0

你的問題有點含糊,但這裏有一些問題,我可以用你的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)