【问题标题】:CakePHP load more results with ajax paginationCakePHP 使用 ajax 分页加载更多结果
【发布时间】:2014-05-05 15:17:21
【问题描述】:

我正在关注一个教程,但我被困在这部分:

查看:

<?php if (!$isAjax):?>
<script type="text/javascript">
var lastX = 0;
var currentX = 0;
var page = 1;
$(window).scroll(function () {
currentX = $(window).scrollTop();
if (currentX - lastX > 200 * page) {
lastX = currentX;
page++;
$.get('<?php echo $this->base."/products/index/page:"; ?>' + page, function(data) {
$('#prod-list').append(data);
});
}
});
</script>
<?php endif;?>

控制器:

var $components = array('RequestHandler');

public function index($page) {
$limit = 8; 
$data = $this->Products->list_products($page, $limit);
$this->set('products',$data); 
$this->set('isAjax', $this->RequestHandler->isAjax());}

然后模型检索一些数据。 问题是在视图中,一个完整的 html 页面被附加到 prod-list 而只是新结果。我该如何“修复”它?

我在某处读到我可能需要一个新视图来获取结果并通过 ajax 获取它。这让我很困惑。

【问题讨论】:

  • 如果我理解正确,加载整个页面而不是视图的一部分?
  • 加载整个页面(再次包含页眉和页脚的完整布局),而不仅仅是结果
  • 试试这样的: if ($this->request->is('ajax')) { $this->disableCache(); $this->布局=假; $this->render('ajax_index'); } 用你的视图文件替换 ajax_index。

标签: php jquery ajax cakephp


【解决方案1】:

编辑:尊重 AD7six 注释,我已经从 $this -> layout = false; 更改了一段代码;到 $this -> layout = 'ajax';.

你需要使用ajax布局。

if ($this->request->is('ajax')) {
        $this->disableCache(); 
        $this->layout = 'ajax';
        $this->render('your_view_file');
    }

【讨论】:

  • Ajax 请求没有布局(或者说有,but it's empty)。
  • 是的,你是对的。但是在早期的一个项目中,我使用这段代码来加载部分 HTML 代码,没有任何问题。
  • 它不会引起任何问题(即使在编辑之后),因为它与那些不存在的行完全一样。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2012-03-02
  • 2018-07-06
  • 2013-08-24
  • 1970-01-01
相关资源
最近更新 更多