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;
});  

私のコードを改善できますか? もう1つの問題は、ヘッド部分でajaxを使用する場合、さまざまなページをURLとして投稿するにはどうすればよいですか?

4

1 に答える 1

0

あなたの問題は少しあいまいですが、JQuery で確認できる問題がいくつかあります。

  • JQuery に設定data: Jsonしましたが、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 関数を読む必要があるようです

CI で Ajax を使用するための優れたチュートリアルを次に示します - http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-day-8-ajax/

最後に、Chrome の開発者ツール Web インスペクターのコンソールとネットワーク機能を使用するか、Firefox 用の Firebug を入手して、js エラーを確認し、ajax リクエスト (XHR) を監視することができます。

于 2012-08-23T12:48:40.263 に答える