我已经阅读https://gist.github.com/tobysteward/6163902和& AJAX pagination with Laravel但似乎无论如何我都有不同的问题。
长话短说:当我搜索时,获取正确的数据并且ajax工作"显示数据,不刷新"仅针对第一页,但是从页面上的下一页刷新,那么如何进行ajax调用以循环返回的数据并根据每个页面显示它?
此外,如何将搜索查询添加到网址,目前在获取数据时,网址不会更新,而是保持其当前状态(即index?page=3
)。
搜索表单
{{ Form::open(['route' => 'search', 'method' => 'GET', 'id' => 's-form',])}}
{{ Form::text('search', null, ['id' => 'search', 'placeholder' => 'Search For ...']) }}
{{ Form::submit(Go) }}
{{ Form::close() }}
搜索控制器
public function search() {
$input = Input::get('search');
$posts = Post::where('title','LIKE',$input)->paginate(4);
if (Request::ajax()) {
return View::make('posts.search')->withPosts($posts);
}
return View::make('posts.index')->withPosts($posts);
}
搜索视图
@forelse ($posts as $post)
// do stuff
@endforeach
<nav>{{ $posts->appends(Request::except('page'))->links() }}</nav>
js
$('#s-form').submit(function(e)
{
e.preventDefault();
$.ajax({
url: $(this).attr('action'),
data:{
search: $('#search').val()
},
success: function(data){
$('#result').html(data);
}
});
});
答案 0 :(得分:2)
这就是所需要的:
$(document).ajaxComplete(function() {
$('.pagination li a').click(function(e) {
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
url: url,
success: function(data) {
$('#result').html(data);
}
});
});
});
现在我只需要根据每个页面更新URL。