あえて画面遷移したい人のためのForm関数

Ajaxでデータ投げたら、エラーページのHTMLが丸々返ってきた経験ありませんか?
その度に、Formを作成するのもめんどくさいので、関数化してみました。

$.form = function(s)
{
  var def = {
    type: 'get',
    url: location.href,
    data: {}
  };

  s = jQuery.extend(true, s, jQuery.extend(true, {}, def, s));

  var form = $('<form>')
    .attr({
      'method': s.type,
      'action': s.url
    })
    .appendTo(document.body);

  for (var a in s.data) {
    $('<input>')
      .attr({
        'name': a,
        'value': s.data[a]
      })
      .appendTo(form[0]);
  };

  form[0].submit();
}


$.ajaxの引数に似せて作ってあるので、こんな感じに設定できます。
簡易版なので、dataの引数はObject型しか対応してません。

$.form({
 type: 'post',
 url: '/frontend_dev.php/user/new',
 data: {
   id:  1,
   name: 'hoge'
 }
});