案件で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;
}