【问题标题】:How to save JSON data in cakephp如何在 cakephp 中保存 JSON 数据
【发布时间】:2012-08-29 19:29:49
【问题描述】:

我正在使用稳定的 CakePHP v2.2.1。我有一个UsersController,动作为add()。我正在尝试通过 ajax 发送用户信息(从主页到/users/add)并保存数据。我的代码是这样的:

// /app/View/Pages/home.ctp
<?php
   $data = array('User' => array('username' => 'vegeta_super_sayajin',
    'password' => 'over9000!', 'email' => 'vegeta@supersayajin.com',
    'profile_pic' => '/home/pics/scouter.jpg', 'firstname' => 'Vegeta',
    'lastname' => 'Vegeta', 'level_id' => '9001'));
?>
<script type="text/javascript">
    var data = <?php echo json_encode($data); ?> //convert $data into json format
    $.ajax({url: '/users/add', data: "data="+data, type: 'post'});
</script>

我如何在UsersController 中接收这些数据,以便处理和保存?

目前,我正在尝试:

// /app/Controller/UsersController.php
function add() {
    if($this->request->is('post') {
        //returns "Error: [object Object] in logfile
        $this->log($this->request->data);
    } else {
        $this->Session->setFlash(__("The user could not be saved :("));
    }
    $this->autoRender = false;
}

$this-&gt;log($this-&gt;request-&gt;data)/app/tmp/logs/error.log 文件中返回Error: [object Object],并且此用户信息不存在于$this-&gt;request-&gt;params 的任何索引中。到目前为止,我所有的谷歌搜索都只返回了复杂的 cakephp v1.3 技术。 cakephp v2.2.1 是怎么做到的?

【问题讨论】:

    标签: json cakephp


    【解决方案1】:

    你可以试试下面的代码。它会为你工作。

    <?php
    $data = array(
    'User' => array(
        'username' => 'vegeta_super_sayajin', 
        'password' => 'over9000!',
        'email' => 'vegeta@supersayajin.com', 
        'profile_pic' => '/home/pics/scouter.jpg',
        'firstname' => 'Vegeta', 
        'lastname' => 'Vegeta', 
        'level_id' => '9001')
        );   
    ?>
    <script type="text/javascript">
    var data = [<?php echo json_encode($data); ?>] //convert $data into json format
    $.ajax({
        url: 'checks/add', 
        data: "data="+JSON.stringify(data), 
        type: 'post'});
    </script>
    

    在你的控制器代码中:

    // /app/Controller/UsersController.php
    function add() {
    if($this->request->is('post') {
        $this->log(json_encode($this->request->data, true)); //returns "Error: [object Object] in logfile
    } else {
        $this->Session->setFlash(__("The user could not be saved :("));
    }
    $this->autoRender = false;
    }
    

    这里是json_decode documentation。第二个参数true会将对象转换成数组。

    【讨论】:

    • 是的! JSON.stringify() 成功了!非常感谢您的回复,我已经连续 8 个小时以上尝试了很多不同的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多