0

多くの調査の結果、Laravel が非常に優れていることがわかりました。アニメーション付きのホームページを開くと、その後、メニューとページのコンテンツが両側に分割されます。リンクをクリックすると、コンテンツのみが変更されます。jQuery/ajax を試してみました。しかし、質問があります。コンテンツとサイドバーメニュー内のリンクでコンテンツを変更したいのです。その方法を教えてもらえますか?

これは私の ajax.js です:

 $(document).ready( function() {

    $("#content ul li a").click( function(e){
         e.preventDefault();
         $('#page').load(this.href);
         return false;
    });

});

これは私の Articles コントローラーです:

<?php
class Articles_Controller extends Base_Controller
{

    public $restful = true;
    public $layout = 'layouts.default';

    public function get_index(){
        $this->layout->title = "Anasayfa";
        $this->layout->content = View::make('articles.index')
             ->with('articles',Article::order_by('id')->get());
    }

    public function get_view($id){
        $this->layout->title = "Hizmetlerimiz";
        $this->layout->content = View::make('articles.view')
             ->with('article',Article::find($id));
    }
}

私のdefault.blade.php

<div id="wrapper">
    <div id="page">
        {{ $content }}
    </div>

    <div id="sidebar">
        <div id="sidebar-content">
        <!-- MENU -->
        <ul id="menu">
            <li class="current"><a href="#">ANASAYFA</a></li>
            <li><a href="#">HAKKIMIZDA</a></li>
// ...

私のindex.blade.php

<div id="content">

    @foreach($articles as $article)
    <ul class="blog-medium">
        <li>    
            <div class="blog-medium-text">
                <h1><a href="./post.html">{{$article-> title }} </a></h1>
                <p class="blog-medium-excerpt"><p>Tek kişilik sınıflarda YGS - LYS hazırlık programımızda dersler özel&#8230;<br />
                {{ HTML::link_to_route('article','devamı', array($article->id)) }}</p>
            </div>
        </li>
    </ul>
    @endforeach
</div>

私のview.blade.php

<div id="content">
    <h1>{{$article->title}}</h1>
    <p>{{$article->content}}</p>
</div>
4

1 に答える 1

2

問題はあなたのJqueryにあると思います

$(function() 
{
    $("#content ul li a").click( function()
    {
        var url = $(this).attr('href'); // Get href value from <a>

        $('#page').load(url);

        return false; // No need for e.preventDefault() if return false;
    });
});

これは、href 値がコントローラ メソッドへのフル パスまたは相対パスであると想定して機能するはずです。

安らかなコントローラーを使用しているため、AJAX は GET および POST HTTP メソッドに対応していることを考慮してください。すべての POST および GET データを個別の関数に分離し、次を使用してリクエストが Laravel の Ajax であるかどうかを確認することもできます。

if (Request::ajax())
{
    ... // The request is AJAX, do ajax stuff

    return Response::json(array('action' => 'complete'));
}
于 2012-08-09T18:53:03.083 に答える