Параметр isAjax не устанавливается для разбивки на страницы в CakePHP - PullRequest
0 голосов
/ 07 февраля 2012

Эту проблему будет немного сложнее объяснить, так что терпите меня.Я создал 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.Этот код работает в основном, проблема в том, что запрос AJAX не задается CakePHP (v 1.3) после второй страницы.Следовательно, третья страница - это та же страница, что и вторая страница (дубликаты), это происходит, поскольку $ page снова устанавливается в 1.Что также странно, так это то, что следующие страницы загружаются нормально.Я изучил HTTP-запросы, есть четкая разница между AJAX-запросами и не-AJAX-запросами, и запрос на загрузку второй страницы чаще всего является не-AJAX-запросом.Даже этот код возвращает false на второй странице:

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

Почему это происходит?Если вы хотите, чтобы я предоставил любую другую информацию, дайте мне знать.Я рад услышать любые предложения, решения и / или идеи отладки.

1 Ответ

0 голосов
/ 08 февраля 2012

Это не похоже на проблему CakePHP, похоже на заголовки, которые ваш браузер отправляет с запросом.

Я бы порекомендовал использовать инструмент проверки запросов, такой как Fiddler (http://fiddler2.com/fiddler2/). Это будетПозволяет проверять заголовки, а также запросы и ответы на все ваши звонки.

...