1 | "use strict";
|
2 |
|
3 | var n = require('../element/create');
|
4 | var guid = require('mout/random/guid');
|
5 | var forIn = require('mout/object/forIn');
|
6 |
|
7 |
|
8 | function 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 |
|
27 | module.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 | };
|