Эту проблему будет немного сложнее объяснить, так что терпите меня.Я создал 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");
}
Почему это происходит?Если вы хотите, чтобы я предоставил любую другую информацию, дайте мне знать.Я рад услышать любые предложения, решения и / или идеи отладки.