2012-08-29 56 views
3

我正在使用CakePHP v2.2.1穩定版。我有一個UsersController與行動add()。我試圖通過ajax發送用戶信息(從主頁到/users/add)並保存數據。我的代碼是這樣的:如何在cakephp中保存JSON數據

// /app/View/Pages/home.ctp 
<?php 
    $data = array('User' => array('username' => 'vegeta_super_sayajin', 
    'password' => 'over9000!', 'email' => '[email protected]', 
    '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->log($this->request->data)/app/tmp/logs/error.log文件返回Error: [object Object],並且該用戶的信息不會以任何$this->request->params的索引的存在。到目前爲止,我的所有Google搜索都只返回了複雜的cakephp v1.3技術。這在CakePHP v2.2.1中如何完成?

回答

1

您可以嘗試下面的代碼。它會爲你工作。

<?php 
$data = array(
'User' => array(
    'username' => 'vegeta_super_sayajin', 
    'password' => 'over9000!', 
    'email' => '[email protected]', 
    '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將把對象轉換成一個數組。

+0

是的! 'JSON.stringify()'做到了!非常感謝你的回覆,我一直在試圖用很多不同的東西超過8個小時。 –