POSTでSubmitをやる。
- ページのプロパティのURLにクエリ部分を表示したくない時に便利。
- 特定の状態のページに直リンや直ブックマークを避けたい場合とかにも有効。
- 某サイトみたいに、パスワード情報はブラウザ側でmd5化して必要最低事項のみを渡す必要がある場合等にAJAXよりも簡単に使えるかも。
var frm = new postSubmit(); frm.add('hoge', 'moge'); frm.submit(url, target_frame);
みたいにして使う。
function postSubmit() { this.frmObject = document.createElement("form"); this.frmObject.method = "get"; this.add = function(elementname, elementvalue) { var input = document.createElement("input"); input.type = "hidden"; input.name = elementname; input.value = elementvalue; this.frmObject.appendChild(input); this.frmObject.method = "post"; }; this.submit = function(url, targetFrame) { try { if (targetFrame) { this.frmObject.target = targetFrame; } } catch (e) { } try { if (url) { this.frmObject.action = url; document.body.appendChild(this.frmObject); this.frmObject.submit(); return true; } else { return false; } } catch (e) { return false; } }; };
■ 2008/12/01 追記
JavaScriptをFLASH等から呼び出して使用した場合は、POST送信時のエンコーディングはHTMLのエンコードに依存します。
エンコードが期待どおりの方式にならない場合はdocument.bodyが所属するHTMLのエンコードを確認してください。
※もちろん、全てのブラウザがそのように動作する保証はありませんので全ての環境で完動する必要があるなら対策は立ててください。
■ 2009/02/02 追記
- こちらのサイト様にて prototype.js で綺麗に書き直したものがあります。
- Ajax.Request に渡せるように、フォームを動的に生成してからdrop()するメソッドも用意してあるようです。