laravel4 通过 ajax 进行分页

Posted

技术标签:

【中文标题】laravel4 通过 ajax 进行分页【英文标题】:laravel4 pagination over ajax 【发布时间】:2013-07-15 14:13:57 【问题描述】:

我的控制器中有一个函数应该返回给我一组分页的东西,我这样做的方式与所有其他控制器完全相同(它完美地工作)但我得到了一个空对象。 函数代码如下:

public static function getQuotes()
    $quotes = Quote::orderBy('created_at','desc')->paginate(15);
    $links = $quotes->links();
    return json_encode(array( 'quotes' => $quotes, 'links' => $links ));        

这里是 ajax 请求:

$.ajax(
     type: "POST",
     url: url,
     data: datagram: datagram,
     success: function(data)
       console.log(data);    //debug
       catEditor.quoteStuff(data);
       typeof data == 'string' ? tools.flash(data) : 0;
     ,
     error: function(xhr, status, err) 
       console.log(err.error+' '+xhr.responseText+' '+status);
     
);

【问题讨论】:

你能展示一下 console.log 打印成功的内容吗? 【参考方案1】:

你能不能先试试这个方法:

return Response::eloquent(Quote::orderBy('created_at','desc')->paginate(15));

再见

【讨论】:

POST localhost:8000/getQuotes 500 (内部服务器错误) jquery-1.9.1.min.js:5 undefined "error":"type":"Symfony\\Component\\Debug\\ Exception\\FatalErrorException","message":"调用未定义的方法 Illuminate\\Support\\Facades\\Response::eloquent()","file":"C:\\Users\\im\\Desktop\\ cms\\app\\controllers\\LayoutController.php","line":53 错误 这是一个laravel 3.X的方法...对不起【参考方案2】:

首先,尝试在 getQuotes() 方法中返回一个像这样的简单对象:

return Response::json(array('name' => 'Steve', 'state' => 'CA'));

如果您可以从您的 ajax 方法中获取它,那么您的 orm 请求应该有问题。否则问题就在前面。

再见

【讨论】:

【参考方案3】:
$quotes = Quote::orderBy('created_at','desc')->paginate(15);
$links = $quotes->links();
return json_encode(array( 'quotes' => $quotes->getCollection()->toArray(), 'links' =>$links )); 

试试这个 get 集合是从对象推送实例然后转换为数组

【讨论】:

【参考方案4】:

Paginate 返回一个 Paginator 对象,而不是一个集合

【讨论】:

【参考方案5】:

只需在 json 编码之前手动将 $links 对象转换为字符串:

return json_encode(array( 'quotes' => $quotes, 'links' => (string)$links )); 

祝你好运:)

【讨论】:

以上是关于laravel4 通过 ajax 进行分页的主要内容,如果未能解决你的问题,请参考以下文章

框架学习日志:如何通过Ajax进行分页查询并绑定数据?

kaminari 通过 ajax 分页,remote = true 不影响 Rails 3 中的视图

Laravel 4 CSRF 表单通过 Ajax 调用提交

在 Razor 视图中使用 Ajax 进行 Asp.Net Core 表分页

Laravel 5 缓存/分页问题

Laravel 4 和 Angular JS 和 Twitter Bootstrap 3 分页