尝试实施“加载更多”'按钮,通过Laravel的分页()。在请求更多时,我被第二次数据库调用挂断了。我尝试了一些不同的版本,但正如您所看到的,它完全不正确。
控制器
public function displayItems() {
$items = DB::table('stuff')->paginate(100);
Session::put( 'items.page' , 0 );
return View::make('pages/items', ['items' => $items]);
}
public function displayMoreItems() {
if ( Session::has( 'items.page' ) ) {
$page = Session::get( 'items.page' ) + 1;
Session::put( 'items.page' , $page );
$items = DB::table('stuff')->paginate(100);
return View::make('pages/items', ['items' => $items]);
}
}
路线
Route::get( '/load/more' , [
'as' => 'load.more' ,
'uses' => 'LoadMoreController@displayMoreItems'
] );
刀片
@foreach($items as $item)
<li>{{ $item->name }}</li>
@endforeach
<a id="load-more-btn" href="{{ route( 'load.more' ) }}" class="btn blue">Load More</a>
JS
$( '#load-more-btn' ).click( function (event) {
event.preventDefault();
$btn = $( this );
$.ajax( {
url : $btn.attr( 'href' ),
dataType : 'html',
timeout : 10000
} ).done( function (data) {
if ( !data ) {
$btn.hide();
return;
}
$btn.before( data );
} ).fail( function (jqXHR, textStatus, error) {
if ( textStatus == 'timeout' ) {
alert( 'Error, please try again later.' );
}
else {
alert( 'Error, please try again later.' );
}
} );
} );
答案 0 :(得分:0)
试试这个:
public function displayItems() {
$items = Stuff::paginate(100);
}
请注意:
Stuff
是您的型号名称。
答案 1 :(得分:0)
将\Input::merge(array('page', $page));
添加到方法displayMoreItems()
。