0

经过大量研究,我发现 Laravel 非常好。我有一个带有动画的主页打开,然后菜单和页面内容分成每一侧。单击链接后,我只想更改内容。我尝试使用 jQuery/ajax。但我有一个问题,我希望内容和侧边栏菜单中的链接更改内容。你能告诉我这样做的方法吗?

这是我的 ajax.js:

 $(document).ready( function() {

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

});

这是我的文章控制器:

<?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 值是控制器方法的完整或相对路径,这应该可以工作。

当您使用 restful 控制器时,请考虑 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 回答