Slim3でPOST@jQuery | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

普段あまり使わないjQuery。忘れないうちにメモ。
GAEのフレームワークSlim3でjQueryのPOST使う時。

今回やったのは大きく2パターンあって、

$.postと$.ajax

違いは、前者は処理結果(success or error)を判別しない。
後者は処理結果を判別する。
処理に失敗した時に挙動を分けたい時は後者を使うといいかも。

下記はURL「/hoge」に対して、パラメータ「id=tarou」を送って、
返ってきたデータを
<div id="res"></div>
に表示させる方法。

$.postの場合

$(function(){
    //IDの存在チェック
    $("#checkId").click(function () {
        $.post("/hoge",{"id":"tarou"},
            function(data,status){
                $("#res").html(data);
            }
                ,"html"
            );
    });
});



<div id="res"></div>


$.ajaxの場合

$(function(){
    //IDの存在チェック
    $("#checkId").click(function () {
        $.ajax({
            type: "POST",
            url: "/hoge",
            data: "id=tarou",
            success : function(data,status){
                $("#res").html(data);
            },
            error:function(){alert("エラーです。");},
            dataType:"html"
        });
    });
});



<div id="res"></div>


POST先、「/hoge」の処理(Controllerのrunメソッドです。)

@Override
public Navigation run() throws Exception {

    //レスポンスのエンコード
    response.setContentType("text/html; charset=UTF-8");

    //リクエストパラメータをStringとして取得
    String id = asString("id");

    //レスポンスにセット
    String message = id;

    response.getWriter().write(message);
    return null;
}

これでとりあえず何とかなります。
疎通しかやってないので、$.ajaxのerrorが本当に機能してるかは未確認です。

ちなみにIDをinputから取得したい場合は

data: "id=" + $("#id").val()

とすると出来る。