0

私は ajax リクエストを送信して、いくつかのフォーム データを CakePHP コントローラーに投稿し、ユーザーを別のページに移動していくつかの画像をアップロードしています。これが私がしたことです:

1- feedbacks/add controller/action の add.ctp ビューで、javascript コードを追加しました。jquery ajaxを使用してフォームデータを送信しました

2-フィードバックコントローラーの追加アクションで、次のコードを書きました:

public function add() {

        if ($this->RequestHandler->isAjax()) {

//commenting the next 3 lines has no effect
$this->layout = 'ajax'; // Or $this->RequestHandler->ajaxLayout, Only use for HTML
                $this->autoLayout = false;
                $this->autoRender = false;

            $response = array('success' => false);

            $data = $this->request->input(); // MY QUESTION IS WITH THIS LINE
           // var_dump($data);

            $this->render('/Uploads/add');
            // exit();
        } else {...} 

firebug の応答が html として表示されるようになりましたが、ブラウザはリダイレクトしません。

ここでの問題は誰か教えてもらえますか??

ありがとう

4

1 に答える 1

2

通常、この種のフォーム送信を使用する場合は、JSON を使用する必要があります。これは、私たちが使用する jQuery で標準的に使用される実装です。

http://book.cakephp.org/2.0/en/views/json-and-xml-views.htmlという良い JSON レスポンスを作成してみてください。

jQuery で、成功するまで待ちます。

jQuery.ajax({
    url:baseUrl + '/Uploads/add',
    type:'POST',
    data: dataInModel,
    success: function(data) {
        alert('you got success!');
        console.log(data);
        //example reloading uploads:
        $('#uploads').load(baseUrl + '/Uploads/index');
    }
});

あなたの成功関数では、あなたがやりたいことは何でもします。したがって、たとえば、リロード、リダイレクトなどを入れることができます。しかし、それは実際には ajax ではありません。アップロードを追加した場合、たとえば、アップロードのみでリストをリロードする場合のように ajax になります。これは、上記のコード例に追加した生の例です。

于 2013-01-13T11:59:57.727 に答える