Ajax でフォームポスト
(function($) { $.fn.ajaxPost = function(callback, options) { var default_options = { data_type: 'html', before_send: function() {}, error_handler: function() {} }; options = $.extend(default_options, options) return this.each(function(){ if(this.tagName.toLowerCase() != 'form') return; var f = $(this); var submit = f.find('button[@type="submit"], input[@type="submit"]') f.submit(function(e) { e.preventDefault(); $.ajax({ url: f.attr('action'), type: 'POST', data: f.serialize() + '&mode=ajax', dataType: options.data_type, beforeSend: function() { submit.attr('disabled', 'disabled') options.before_send(); }, success: callback, error: options.error_handler, complete: function(xhr, textStatus) { submit.removeAttr('disabled') } }); }); }); } })(jQuery)
使い方
<form action="/hoge" id="hoge"> ..... </form>
$('#hoge').ajaxPost(function(data, textStatus) { alert(data); });
追記 2009/2/12 22:50
修正。complete オプションがあったのね。