【问题标题】:isAjax param not being set for pagination in CakePHP在 CakePHP 中没有为分页设置 isAjax 参数
【发布时间】:2012-02-29 06:36:37
【问题描述】:

这个问题会有点难以解释,所以请耐心等待。我为我的应用程序创建了 ajax 分页。以下是它在控制器中如何运行的核心代码(出于隐私考虑,某些代码显然已更改或未显示):

function action(){
    //PROBLEM LIES HERE
    if ($this->params['isAjax']){
        $page = $_COOKIE['page'];
    } else {
        $page = 1;
    }
    //END PROBLEM AREA
    $offset = ($page - 1) * $this->perPage;
    $limit = $this->perPage + 1; //+1 so we can test if there are more after
    setcookie('page', ++$page, 0, '/');

    $objects = $this->getObjects($query, $limit, $offset);
    $moreObjects = count($objects) > $this->perPage;
    $objects = array_slice($objects, 0, $this->perPage);
    $this->set('objects', $objects);

    if ($this->params['isAjax']){
        $this->set('type', 'objects');
        $rendered = $this->render('/elements/ajax_elements', null);
        echo json_encode(array('objects' => $rendered, 'moreObjects' => $moreObjects));
        $this->_stop();
}
$this->set('moreObjects', $moreObjects);
}

我已经包含了 RequestHandler 组件。这段代码最有效,问题是在第二页之后 CakePHP (v 1.3) 没有设置 AJAX 请求。因此,第三页与第二页是同一页(重复),这是因为 $page 再次设置为 1。同样奇怪的是,以下页面加载正常。我检查了 HTTP 请求,AJAX 请求和非 AJAX 请求之间有明显的区别,第二个页面加载问题请求通常是非 AJAX 请求。甚至此代码在第二页上也返回 false:

function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest");
} 

为什么会这样?如果您需要我提供任何其他信息,请告诉我。我很高兴听到任何建议、解决方案和/或调试想法。

【问题讨论】:

    标签: ajax cakephp pagination cakephp-1.3


    【解决方案1】:

    这听起来不像是 CakePHP 问题,它听起来像是您的浏览器随请求一起发送的标头。

    我建议使用请求检查工具,例如 Fiddler (http://fiddler2.com/fiddler2/)。这将允许您检查所有调用的标头以及请求和响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多