2010年9月29日水曜日

Formを作らずにJSでPOST送信

AタグやButtonのonclickなんかを引っ掛けてPOSTしたい場合、hidden要素しか持たない隠しformを作ったりしていましたが、Javascriptだけで処理できたのでメモ。

※参考
HTMLでformを作らずにJavaScriptでPOST送信

/**
 * データをPOSTする
 * @param String アクション
 * @param Object POSTデータ連想配列
 */

function execPost(action, data) {
 
// フォームの生成
 
var form = document.createElement("form");
 form
.setAttribute("action", action);
 form
.setAttribute("method", "post");
 form
.style.display = "none";
 document
.body.appendChild(form);
 
// パラメタの設定
 
if (data !== undefined) {
 
for (var paramName in data) {
   
var input = document.createElement('input');
   input
.setAttribute('type', 'hidden');
   input
.setAttribute('name', paramName);
   input
.setAttribute('value', data[paramName]);
   form
.appendChild(input);
 
}
 
}
 
// submit
 form
.submit();
}

こんな感じで呼び出し。

<a onclick="execPost('/hoge', {'fuga':'fuga_val', 'piyo':'piyo_val'});return false;" href="#">POST送信</a>

4 件のコメント:

  1. Form作ってappendChildしてまんがな

    返信削除
  2. その通りですねー。2010年の記事ですね。
    当時はjqueryもよく分かってなかったかも。。
    今ならnodeでsocketぐらいが素敵な実装ですかね??

    返信削除