AJAX不在这里工作和一些问题?

时间:2012-08-08 19:47:04

标签: php ajax laravel

经过大量研究,我发现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>

1 个答案:

答案 0 :(得分: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'));
}