$.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ってなかったでしたっけ?
そういうことじゃない?
nobu
ツッコミありがとうございます!
分かりにくい表現だったので修正しました。
「$.postJSONとかないのかよ!」
って話でした。
が、こうやって書いてみると、
「JSONをポストする。」
みたいに見えるので、実装されてなくて当然なのかなぁ?とも思えますな。
kishi-r
確かにそうっすよね。
「$.postJSON」
必要なくても、
なんとなくあって欲しい感じがしてた。
nobu
実際にはほとんど$.getと$.postだけで済ませてしまうので、
4つ目の引数でtype指定出来るだけで十分だったりしますw