$.postのレスポンスタイプ@jQuery

jQuery を使って Ajax する時のお話。

GETの時には $.get とか $.getJSON とかレスポンスの種類によってメソッドも色々種類があるのに、POSTの時には $.post 以外にそういうの無いの?と思ってちょっと調べてみた。

結論、メソッド自体は無い。

メソッド自体は用意されてないものの、 $.get$.post も内部で動いてるのは $.ajax 。 なので、 $.ajax のオプションに dataType を指定出来れば良い。で、 $.post を見てみると4つ目の引数で dataType を指定出来るみたい。

// 4つ目の引数がdataType
post: function( url, data, callback, type ) {
    if ( jQuery.isFunction( data ) ) {
        callback = data;
        data = {};
    }

    return jQuery.ajax({
        type: "POST",
        url: url,
        data: data,
        success: callback,
        dataType: type   // ココ
    });
},

なので、実際使う時には、

$('form').submit(function ()
{
    var $$ = $(this);

    $.post(
        $$.attr('action'),
        $('input', $$).serialize(),
        function (response, status)
        {
            // responseはJSONオブジェクト。
        },
        'json'
    );

    return false;
});

みたいな感じで出来る。今まで自分で eval してた。小さい事だけど、このへんの使い勝手は物凄く大事。

また一つ jQuery が好きになりましたとさ。

Posted at: 
2007/07/14 19:51:44
4 Comments
0 TrackBacks
Tags: 
JavaScript
jQuery
Trackback: 
http://humming.via-kitchen.com/2007/07/14/response-type-of-post-at-jquery/trackback/

TrackBacks

まだ登録されていません。

Comments

t-matsuda

あれ?$.postってなかったでしたっけ?
そういうことじゃない?

Created at: 
2007/07/14 21:05:03

nobu

ツッコミありがとうございます!
分かりにくい表現だったので修正しました。

「$.postJSONとかないのかよ!」

って話でした。
が、こうやって書いてみると、

「JSONをポストする。」

みたいに見えるので、実装されてなくて当然なのかなぁ?とも思えますな。

Created at: 
2007/07/14 23:21:08

kishi-r

確かにそうっすよね。
「$.postJSON」
必要なくても、
なんとなくあって欲しい感じがしてた。

Created at: 
2007/07/16 01:18:18

nobu

実際にはほとんど$.getと$.postだけで済ませてしまうので、
4つ目の引数でtype指定出来るだけで十分だったりしますw

Created at: 
2007/07/16 01:56:44

Add Comment

Add Comment