Я делаю Ajax-вызовы для получения контента JSON во всех моих проектах, и я никогда не делал большую часть того, что вы делаете здесь. Экстент моего кода контроллера выглядит примерно так:
public function do_something_ajaxy() {
Configure::write ( 'debug', 0 );
$this->autoRender = false;
/** Business logic as required */
echo json_encode ( $whatever_should_be_encoded );
}
Я делаю свои Ajax-вызовы через jQuery, поэтому я предполагаю, что может изменить ситуацию, но это меня удивит В этом случае ваша проблема, похоже, в обработчике, а не в вызывающем. Я бы порекомендовал удалить строки 17-23 и заменить их на простой оператор echo json_encode ( array('response' => $actions[0]) )
.
Вы также тестируете на $this->RequestHandler->isGet()
. Попробуйте вместо этого $this->RequestHandler->isAjax()
. Я не уверен, распознаются ли вызовы Ajax как по их типу, так и по их методу.