2016-12-03 39 views
0

我创建了一个网站,我想执行CRUD操作的数据集。为了简单起见,假设的书一表。我知道example.com/books应该返回书籍列表,而example.com/books/24应该返回ID为24的书。如何使用REST端点,以在不同的调用返回HTML和JSON

现在,想象一下,我的书籍列表非常大,并且我想允许用户使用浏览书籍列表一个表分页,但由于数据集是非常大的我只想检索使用AJAX当前页面。

的问题是:应该example.com/books返回一个包含了所有分页控件和其他部件表中的HTML?还是应该以JSON格式返回数据?什么是正确的方式来执行这两个调用。

在此先感谢

回答

0

在你的控制器,你可以做这样的事情:

function index (Request $request){ 

$books = Book::paginate(10); 

if($request->ajax()){ 
    //ajax request 
    return Response::json(view('books', compact('books'))->render()); 
    } 

    //html request 
    return view('books', compact('books')); 

} 

你可以通过一个page参数的路线导航到页面。
实施例:example.com/books?page=2将获取的结果的第二页。

建议的方法

有类似HTML的,你会normaly做渲染初始请求。然后在接下来的页面中,得到呈现为Ajax调用的第二页,并追加到DOM。

return Response::json(view('books', compact('books'))->render());

$('.pager a').on('click', function (e) { 
    var page = $(this).attr('href').split('page=')[1]; 
    e.preventDefault(); 
    $.ajax({ 
     type: "GET", 
     url: 'page=' + page, 
     dataType: 'json', 
     success:function(json){ 
     alert("Success"+json); 
     }, 
     error:function(){ 
     alert("Error"); 
    }  
    }); 
    }); 
}); 

看看Laravel Pagination

相关问题