Postメソッドでwindow.openしたい
案件でPostメソッドでwindow.openするような場面があったので作りました。
この方のコードをちょっと変更。 → 『window.open()でPOST』
window.openの引数をちゃんとすべて指定できないですが、そのあたりは適当に。
function onClickSample()
{
//設定
var url = "sample.html";
var query = [ { key:"hoge", value:"fuga"},
{ key:"test", value:"test"},
];
//実行
PostWindow = window.openByPost( url, query, "_newWindow" );
}
//window.openByPost 実装
window.openByPost = function ( url, query, name )
{
var win = window.open( "about:blank", name );
// formを生成
var form = document.createElement("form");
form.target = name;
form.action = url;
form.method = 'post';
for( var i = 0; i < query.length; i++ )
{
var kv = query[i];
var key = kv["key"];
var val = kv["value"];
if ( key )
{
var input = document.createElement("input");
val = ( val != null ? val : "" );
input.type = "hidden";
input.name = key;
input.value = val;
form.appendChild( input );
}
}
// 一時的にbodyへformを追加。サブミット後、formを削除する
var body = document.getElementsByTagName("body")[0];
body.appendChild(form);
form.submit();
body.removeChild(form);
return win;
}