我已经为 ajax 和 json-requests 设置了蛋糕 php,主要使用这个教程:http: //book.cakephp.org/2.0/en/views/json-and-xml-views.html
一切正常,但是如果我发出一个 post 请求(在这种情况下是使用 cakephp 和 json-rpc),Cake 会进入一个无限循环,在我的数据库中保存数百个空条目,直到它最终耗尽内存,即使我的控制器和完全为空,只要有一些 json 输出(即使 505 错误消息有效)。这是由于自动魔术吗?当我传递正确设置以适合模型的数据时,我可以将数据保存为意图。但是如果发送其他任何东西(例如只是参数或空数据),我会进入这个无限循环。
即使我的帖子包含错误,我认为这不应该发生。
这是错误消息:
<b>Fatal error</b>: Allowed memory size of 33554432 bytes exhausted (tried to allocate 71 bytes) in <b>/var/www/****/cake/lib/Cake/Controller/Controller.php</b> on line <b>333</b><br />
这是我对 jquery 的调用:
$.ajax({
url: '/dezem/cake/users.json', //even if I send the data to user without the json extension, the same happens...
type: 'POST',
dataType: 'json',
data: '{"method": "echo", "params": ["Hello JSON-RPC"], "id": 1}',
success: function(){alert("YEEHHEHAAW")},
error: function(){alert("Nööööööööööööööö")}
})
按照这里的要求,我的控制器内的代码:
class UsersController extends AppController {
public $helpers = array('Js', 'Html');
public $components = array('RequestHandler');
....
public function index() {
$this->User->recursive = -1;
$users = $this->User->find('all');
if($this->RequestHandler->isAjax()){
$this->autoLayout = $this->autoRender = false;
if ($this->request->is('post')){
$this->set(array(
'data' => $users,
'_serialize' => array('data')
));
$this->render('/layouts/json');
}
else if ($this->request->is('get')) {
$this->set(array(
'data' => $users,
'_serialize' => array('data')
));
$this->render('/layouts/json');
}
}
}
}
正如我所说,一个空的控制器会导致相同的结果:
public function index() {
}