cakePHPでjson形式で送信する方法

A0006 001227

cakePHPでjson形式でデータを送信したい

こんばんは、ボーノです。
たった今、宮城で震度4の地震があったみたいですね。結構長かったな。

地図サービスを作ってて、そんな場面があったけど簡単なようで意外と分からなかったので残しておく。

XXXController.php

    return new CakeResponse(array('body' => json_encode(array(
        'content'=> $data['Question']['content'],
        'place_lat'=> $data['Question']['place_lat'],
        'place_lng'=> $data['Question']['place_lng']
    ))));

この一文をcontrollerの最後に付け加える。

ちなみに、ここでいうQuestionはモデル名で、content, place_lat, place_lngはカラム名である。

XXX.ctp

$("#questionBtn").bind("click",
    function (e){
        $.ajax({
            data: $("#questionBtn").closest("form").serialize(),
            dataType: "json",
            success: function (data){
                console.log("私は"+data.place_lat +", " +data.content);
                plusMarker(data);
            },
            type: "post",
            url: "getAjax"
        });
        return false;
    }
);

今回はフォームを利用し、questionBtnが押されたらAjaxを利用してXXXControllerのgetAjaxアクションにデータが送られる。

そして上記のXXXControllerからjson形式で返答が来て、それをplusMarker()関数に渡す。

dataはjson形式になっている。念のためconsole.logで確認。OK。