Убедитесь, что вы устанавливаете для debug значение 0 в beforeFilter, используйте компонент RequestHandler, чтобы проверить, является ли это запросом ajax.
Использовать RequestHandler
var $components = array(..., 'RequestHandler', ...);
установить отладку на 0, если это ajax-запрос
function beforeFilter()
{
if ($this->RequestHandler->isAjax()) {
Configure::write('debug', 0);
}
}
и в твоей функции
function getlastid()
{
$this->autoRender = false;
$this->autoLayout = false;
$newid = "SHOE";
$response = array('result' => $newid);
$this->header('Content-Type: application/json');
echo json_encode($response);
return;
}
Если вы выводите json и не устанавливаете debug в 0, то к концу торт добавит время выполнения, и он не будет действительным ответом json, мешая jQuery правильно его прочитать.
В качестве дополнения, обычно я устанавливаю еще кое-что в $ response, чтобы я мог лучше с этим справиться.
function getLastId()
{
...
$response = array('success' => false);
... code ...
if ($my_code_is_good) {
$response['success'] = true;
$response['data'] = $my_code_result;
}
...
}
Надеюсь, это поможет