1

JSON POSTリクエストを介して配列を受信しようとしているcakephpアプリを作成しようとしています。コントローラーのローカル配列に保存し、その配列をjsonビューに渡します。同じ配列でjson応答を返すことができます. routers.php に mapresources と parseextensions を追加しました。POST Jsonリクエストでヒットすると200okの応答が返されますが、ローカル配列にデータが保存されず、json応答が追加されたhtmlページ全体が渡されます。これは私のコントローラーです:

class UsersController extends AppController{

    public $components = array('RequestHandler');    
    public function index(){
     }

    public function add(){    
        if($this->request->is('post')){
       $data = $this->User->save($this->request->data);
                $this->set(array(
                'data' => $data,
                '_serialize' => array('data')
            ));
    }}}

json ビュー ファイルに add.ctp という名前を付けました。これは /app/view/Users/JSON/add.ctp の JSON ビューです。

<?php
echo json_encode($data);
?>

私のテーブル ユーザー は元々、ユーザーデータを名前、パスワード、電子メールなどの形式で保存します。次のデータ {{"firstname":"abcrehd","lastname ":"sdfsdf"} データをローカル配列に保存するのではなく、基本的にユーザー テーブルに保存し、長い html ページが追加された json 応答としてユーザー データ + その他の空の列を渡します。私の質問は次のとおりです。1. json 応答をローカル配列に保存するにはどうすればよいですか? 2.その配列をjsonビューに渡すにはどうすればよいですか? 3. json 応答だけでその配列を受け取るにはどうすればよいですか?

私を助けてください。私はこれに永遠に立ち往生しています!ありがとう :)

4

2 に答える 2

0

私は、私を答えに導いてくれた私の上の善良な人々の助けを借りてそれを理解しました:

$data=$this->request->input('json_decode');

これにより、post json リクエストが $data という変数に保存されます。

$this->set(array(
                          'data' => $data,
              '_serialize' => array('data')));

上記のマークが指摘したように、レイアウトやビュー/jsonなどのビューは必要ありません...シリアライズで十分です。URLでpostinの標準のcakephp形式を使用すると、上記のコードはjson応答を返します.json サフィックスを付け、メソッド名を add() にします

助けてくれてありがとう!

于 2013-09-16T09:04:51.500 に答える
-1

私がよく理解していれば:

public function add(){
if($this->request->is('post') || $this->request->is('ajax')){
    if ($this->User->save($this->request->data)) {
                 $this->layout='Ajax' ;
                 /* another actions ..... */
                 $this->set(data,$this->request->data) ; // it's no need i think it will be accessible in view!
                 $this->render('jasonView') ;
    }
}
}
于 2013-09-14T17:07:46.320 に答える