UNPKG

1.09 kBJavaScriptView Raw
1"use strict";
2
3var n = require('../element/create');
4var guid = require('mout/random/guid');
5var forIn = require('mout/object/forIn');
6
7
8function encode(v, k){
9 var values = [], t = typeof v ;
10 if(v === null)
11 return values;
12 if(Array.isArray(v))
13 v.forEach(function(j){
14 values.push.apply(values, encode(j, k+"[]") );
15 });
16 else if(t == "object")
17 forIn(v, function(j, kk){
18 values.push.apply(values, encode(j, k ? k+"["+kk+"]" : kk));
19 });
20 else if(t== "number" || t == "string")
21 values.push([k, v]);
22
23 return values;
24}
25
26
27module.exports = function(action, args) {
28 var iid = guid(), iframe = n('iframe', {
29 id : iid,
30 name:iid,
31 style : 'display:none',
32 });
33
34 var form = n("form", {
35 method: 'POST',
36 action: action,
37 target : iid,
38 });
39
40 encode(args).forEach(function(line){
41 form.appendChild(n('input', {
42 name : line[0],
43 value: line[1],
44 }));
45 });
46
47 document.body.appendChild(iframe);
48 iframe.contentWindow.document.body.appendChild(form);
49
50 form.submit();
51 form.parentNode.removeChild(form)
52};