4

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->log($this->request->data)がファイルに返さError: [object Object]れ、このユーザー情報は のどのインデックス/app/tmp/logs/error.logにも存在しません。$this->request->paramsこれまでの私のグーグル検索では、複雑な CakePHP v1.3 のテクニックしか返されませんでした。これはcakephp v2.2.1でどのように行われますか?

4

1 に答える 1

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 のドキュメントがあります。2 番目のパラメーターtrueは、オブジェクトを配列に変換します。

于 2012-08-30T05:22:10.917 に答える