[英]Ajax Pagination Laravel 5.1
我正在尝试使用 ajax 和 laravel 5 进行分页,但即使使用简单的测试,我也无法执行 ajax 工作:
$(document).on('ready',function(){
$('.pager a').on('click', function (e) {
var page = $(this).attr('href').split('page=')[1];
e.preventDefault();
$.ajax({
type: "GET",
url: 'testeserver.php',
//url:"raphael.dev/testeserver.php",
dataType: 'json', // Notice! JSONP <-- P (lowercase)
success:function(json){
alert("Success"+json);
},
error:function(){
alert("Error");
}
});
});
});
在这个例子中,我尝试在 json 上有一个回报,
<?php
$arr = array("element1","element2",array("element31","element32"));
$arr['name'] = "response";
echo $_GET['callback']."(".json_encode($arr).");";
?>
但只有错误警报,实际上我正在尝试以下情况:
博客控制器:
public function index(Request $request){
$artigos = Artigo::where('publicado_em', '<=', Carbon::now())
->orderBy('publicado_em', 'desc')
->paginate(config('blog.artigos_por_pagina'));
if ($request->ajax()) {
return Response::json(view('Blog.artigos', compact('artigos'))->render());
}
return view('Blog.index', compact('artigos'));
}
路由文件
post('/', 'BlogController@index');
get('/', 'BlogController@index');
get('/{slug}', 'BlogController@show');
查询
$(document).on('ready',function(){
$('.pager a').on('click', function (e) {
var page = $(this).attr('href').split('page=')[1];
e.preventDefault();
$.ajax({
type: "POST",
url: 'page=' + page,
dataType: 'json',
success:function(json){
alert("Success"+json);
},
error:function(){
alert("Error");
}
});
});
});
刚刚找到解决方案,将我的 jquery 代码更改为:
$(document).on('ready',function(){
$('.pager a').on('click', function (e) {
var page = $(this).attr('href').split('page=')[1];
e.preventDefault();
var url = '?page=' + page;
$.post( url, function(data) {
alert( "success"+data );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
并在我的 BlogController 中发现了一个错误:
在
if ($request->ajax()) {
return Response::json(view('Blog.artigos', compact('artigos'))->render());
}
Facade Response 没有声明,所以刚刚添加
Use Request;
在顶部,
但我仍然不明白为什么 $ajax() 不起作用,只是 $get 和 $post
Laravel 使用CSRF
令牌保护您的应用程序。 在使用 Ajax 时,您需要确保通过CSRF
令牌发送,否则 Laravel 将不会处理请求以保护您的应用程序。
$.ajax({
url: 'test',
type: "post",
data: {'_token': $('input[name=_token]').val()},
success: function (data) {
alert('the joys');
},
complete: function (data) {
}
});
注意$('input[name=_token]').val()
- 它将发送您的CSRF
令牌。 您当然需要在您的视图中使用CSRF
令牌创建一个隐藏的输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.