2012-08-08 67 views
0

经过大量研究,我发现Laravel非常好。我有一个主页以动画开头,之后菜单和页面内容分成两部分。点击链接后,我只想要改变内容。我尝试过使用jQuery/ajax。但我有一个问题,我想要内容和侧边栏菜单中的链接来更改内容。你能告诉我怎么做吗?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> 
+0

您的foreach循环不正确。这里修改了吗? – Kalpesh 2012-08-08 22:35:09

+0

这是怎么回事? – ytsejam 2012-08-08 22:42:42

+0

对不起,我的错误 – Kalpesh 2012-08-08 22:45:32

回答

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