首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未为CakePHP中的分页设置isAjax参数

问未为CakePHP中的分页设置isAjax参数
EN

Stack Overflow用户
提问于 2012-02-08 03:56:44
回答 1查看 279关注 0票数 0

这个问题会更难解释,所以请耐心听我说。我已经为我的应用程序创建了ajax分页。以下是它在控制器中如何工作的核心代码(出于隐私考虑,一些代码显然被更改或没有显示):

代码语言:javascript
复制
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 (v1.3)没有设置AJAX请求。因此,第三个页面与第二个页面是同一页面(重复),这是因为$page再次设置为1。同样奇怪的是,下面的页面加载正常。我已经检查了HTTP请求,AJAX请求和非AJAX请求之间有明显的区别,第二个页面加载问题请求通常都是非AJAX请求。即使这段代码在第二个页面上也会返回false:

代码语言:javascript
复制
function isAjax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest");
} 

为什么会发生这种情况?如果您需要我提供任何其他信息,请让我知道。我很高兴听到任何建议,解决方案和/或调试想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-08 05:24:36

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

我推荐使用请求检测工具,比如Fiddler (http://fiddler2.com/fiddler2/)。这将允许您检查所有调用的标头、请求和响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9182939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档