Ajax:重新加载页面时更改Bootstrap选项卡

时间:2014-05-20 08:34:56

标签: ajax twitter-bootstrap laravel tabs reload

我使用Bootstrap做一个Laravel站点。在我的用户页面中,我有两个选项卡,“产品”和“关注者”,但对于第二个选项卡,“关注者”,我进行分页,当我尝试更改分页页面时,所有页面都重新加载,并且回到第一个标签“产品”。

我在stackoverflow上尝试了一些解决方案,但我从未成功过。

这是我的观点

@section('contenu')
  <section class="panel col-lg-8 col-sm-8 m-t-large">
     <header class="panel-heading m-l-n m-r-n">
        <ul class="nav nav-tabs pull-right">
            <li class="active"><a href="#product" data-toggle="tab"><i class="icon-list icon-large text-default"></i>Mes produits en cours de partage</a></li>
            <li><a href="#follow" data-toggle="tab"><i class="icon-group icon-large text-default"></i>Mes abonnés</a></li>
        </ul>
        <span class="hidden-sm">Fiche technique du frigo</span>
    </header>
    <div class="panel-body">
        <div class="tab-content">              
            <div class="tab-pane active" id="product">
                <div class="col-lg-3">
                    {{-- dd($user) --}}
                    <h4>{{{ $user->name }}}</h4>
                    @if($user->photo && File::exists(public_path().'/uploads/photos/users/'.e($user->photo)))
                        {{ HTML::image('uploads/photos/users/'.e($user->photo), e($user->name)) }}
                    @else
                        {{ HTML::image('template/images/avatar.jpg', e($user->name)) }}
                    @endif
                    @if($user->id!=Auth::user()->id)
                        @if(DB::table('user_followers')->where('user_followed', $user->id)->where('user_following', Auth::user()->id)->count()==0)
                            {{ HTML::decode(HTML::linkAction('UserFollowersController@follow', '<i class="icon-heart">S\'abonner</i>', array('id' => $user->id), array('class' => 'btn btn-info m-t-large m-b-small'))) }}
                        @else
                            {{ HTML::decode(HTML::linkAction('UserFollowersController@unfollow', '<i class="icon-heart">Se désabonner</i>', array('id' => $user->id), array('class' => 'btn btn-danger m-t-large m-b-small '))) }}
                        @endif
                    @endif
                </div>
                <div class="col-lg-9">
                    <h4>Le frigo contient en ce moment :</h4>
                        <ul class="list-unstyled">
                            @foreach($user->products as $product)
                            <li class="list-group-item bg m-b-small">
                                <div class="media">
                                    @if(e($product->photo) && File::exists(public_path().'/uploads/photos/products/'.e($product->photo)))
                                        <span class="pull-left img-product"> 
                                            <a href="{{ URL::action('ProductsController@show', $product->id) }}">
                                                {{ HTML::image('uploads/photos/products/'.e($product->photo), e($product->title), array('class' => 'img-rounded')) }}
                                            </a>
                                        </span>
                                    @endif
                                    <div class="media-body">
                                        <div><a href="{{ URL::action('ProductsController@show', $product->id) }}" class="h4">{{{ $product->title }}}</a></div>
                                        <p>{{{ $product->description }}}</p>
                                        <p class="pull-left">Quantité :  <span class="label label-info">{{{ $product->quantity }}}</span></p>
                                        <p class="pull-right">Prix : <span class="badge bg-danger">{{{ $product->price }}} €</span></p>
                                    </div>
                                </div>
                            </li>
                        @endforeach
                    </ul>
                    <div class="pagination">
                        {{-- $users->products->links() --}}
                    </div>
                </div>
            </div>
            <div class="tab-pane" id="follow">
                <div class="row m-b-large">
                    @if($user->followed!=NULL)
                        @foreach($user->followed as $user_followed)
                            <div class="panel col-lg-2 m-l-large m-t-large ">
                                <div class="col-lg-8 m-b-n-small col-md-offset-2 m-t-large text-center">
                                    @if($user_followed->photo && File::exists(public_path().'/uploads/photos/users/'.e($user_followed->photo)))
                                        {{ HTML::image('uploads/photos/users/'.e($user_followed->photo), e($user_followed->name), array ( 'class' => 'img-circle')) }}
                                    @else
                                        {{ HTML::image('template/images/avatar.jpg', e($user_followed->name), array ( 'class' => 'img-circle')) }}
                                    @endif
                                    <h3>{{{ $user_followed->name }}}</h3>
                                </div>
                                <div class="col-lg-10 m-b-small center ">
                                    @if(DB::table('user_followers')->where('user_followed', $user_followed->id)->where('user_following', Auth::user()->id)->count()==0)
                                        {{ HTML::decode(HTML::linkAction('UserFollowersController@follow', '<i class="icon-heart">S\'abonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-info btn-group-justified m-t-large m-b-small'))) }}
                                    @else
                                        {{ HTML::decode(HTML::linkAction('UserFollowersController@unfollow', '<i class="icon-heart">Se désabonner</i>', array('id' => $user_followed->id), array('class' => 'btn btn-danger btn-group-justified m-t-large m-b-small '))) }}
                                    @endif
                                </div>
                            </div>
                        @endforeach
                    @else
                        <div class="panel col-lg-8 col-lg-offset-2 m-t-large">
                            <h4> Tu ne suis actuellement personne </h4>
                        </div>
                    @endif
                </div>    
                <div class="col-lg-12">
                    {{ $user->followed->links() }}
                </div>
            </div>
        </div>
    </div>
</section>
@stop
@section('js')
    {{ Basset::show('usersPaginate.js') }}
@endsection

我的控制器:

public function show($id){

    // récupère les données de l'user et les produis qu'il partage
    $show = $this->api->show($id);

    // décode le json pour qu'il se réaffiche en array pour pouvoir l'exploiter
    $json = json_decode($show->getContent());

    $json->followed = User::userFollowedPaginate($id);

    LaravelMixpanel::identify(Auth::user()->mixpanel_id);
    LaravelMixpanel::track('User show view');

    if(Request::ajax())
    {
        $html = View::make('users.show', $json)->render();

        return Response::json(['html' => $html]);
    }

    return View::make('users.show')
                ->with('user', $json);
}

我的API /控制器:

public function show($id){

    // récupère donnée de l'user et les produits qu'il échange
    $data = User::with(array('products' => function($query){
                                                $query->whereNull('shared_at');
                                                $query->whereNull('deleted_at');
                                            }))->findOrFail($id)->toArray();

    // récupère le nb de produits qu'il échange en ce moment
    $data['nbShareCurrently'] = Product::where('user_id', $id)->whereNull('shared_at')->whereNull('deleted_at')->count();

    // récupère le nb de produits qu'il a échangé depuis le début
    $data['nbShared'] = Product::where('user_id', $id)->whereNotNull('shared_at')->count();

    return Response::json($data, 200);
}

最后我的JS:

function callAjaxUser(page) {
    if(page>0) {
        dataQuery = 'page=' + page;
    }else{
        dataQuery = '';
    }

    $.ajax ({
        type: "GET",
        url: "users",
        data:dataQuery,
        success: ,
        error: 
});
}



$(document).ready(function(){
    $(' .pagination a ').click(function(event){
        event.preventDefault();
        callAjaxUser(Arg.parse($(this).attr('href')).page);
    });
});

但我不知道这个解决方案,所以他目前是空的。

0 个答案:

没有答案