0

我已经为 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() {
    }
4

0 回答 0