laravel 4 paginate get函数返回json



如果有具有此索引功能的控制器:

public function getIndex() {
    return View::make('web.index')
        ->with('projects', Project::orderBy('id', 'DESC')->paginate(8));
}

在我看来,有foreach循环

@foreach($projects as $project)
<a href="like/{{$project->id}}" class="action like {{$liked}}">
  {{$project->likes}}
</a>
@endforeach
<div class="pagination">
  {{$projects->links()}}
</div>

getLike函数:

public function getLike($id) {
    if(Cookie::get('like_'.$id) != 'true')
    {
        $project = Project::find($id);
        $project->increment('likes');
        $cookie = Cookie::forever('like_'.$id, 'true');
        $s = array(
            'status' => 'success'
        );
        $response = Response::json($s);
        $response->headers->setCookie($cookie);
        return $response;
    }
    $response = array(
        'status' => 'error'
    );
    return Response::json( $response );
}

Ajax请求:

$(".like").on("click", function(){
    $.get(
        $( this ).prop( 'href' ),
        {
        },
        function( data ) {
            if(data['status'] == 'error')
            {
                alert("Already Liked");
            }
            else {
                alert('Like');
            }
        },
        'json'
    );
    return false;
});

在第一页中,getLike()函数运行得很好!(im使用ajax来收集数据),但当第2页重新加载时(im使用无限滚动),getLike函数返回带有json文本的空白页。帮助

这种方法有几个问题。

  1. 你做了一个GET请求来点赞。我建议去学习REST原理
  2. 您对PHP进行JS-ajax调用以设置cookie。我不是JS大师,但你可以将你的赞存储在LocalStorage中,也可以从JS中设置cookie。无需为相同的功能创建PHP端点
  3. 如果您确实编写了PHP,请使用以下代码:return Response::json($data)->withCookie($cookie)

有关Laravel Cookies的更多信息,请点击此处:http://laravel.com/docs/requests#cookies

最新更新