FormData is een handig object waarmee je je form aan een XMLHttpRequest kan meesturen, net als bij een gewone form post.
(zie ook Using FormData Objects).
Die FormData wordt zo gebruikt:
Die xhr.send kan dus omgaan met een FormData object.
Nu probeer ik dit ook voor IE < 8 te implementeren maar daar kan je de XMLHttpRequest.prototype.send method niet overriden.
Code zover:
Heeft iemand een idee hoe dit enigszins netjes voor IE7 (IE6?) te doen?
(zie ook Using FormData Objects).
Die FormData wordt zo gebruikt:
JavaScript:
1
2
3
| var xhr = new XMLHttpRequest(); xhr.open("POST", "/submitform"); xhr.send(new FormData(document.forms[0])); |
Die xhr.send kan dus omgaan met een FormData object.
Nu probeer ik dit ook voor IE < 8 te implementeren maar daar kan je de XMLHttpRequest.prototype.send method niet overriden.
Code zover:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| (function(){ if (!('FormData' in window)) { var FD = function(form) { var result = []; for (var i = 0; i < form.elements.length; i++) { var input = form.elements[i]; if (input.name && !input.disabled) { var type = input.type; var tagName = input.tagName; if (tagName == "SELECT") { for (var j = 0; j < input.options.length; j++) { var opt = input.options[j]; if (opt.selected) result.push(input.name + "=" + opt.value); } } else if (type == "checkbox" && input.checked) { result.push(input.name + "=on"); } else if (type != "radio" || input.checked) { result.push(input.name + "=" + input.value); } } } this.result = result; }; FD.prototype = { toString: function() { return this.result.join("&"); }, append: function(key, val) { this.result.push(key + "=" + val); } }; window.FormData = FD; //Change XMLHttpRequest to accept the new FormData var originalXHR_send = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function(data) { if (data instanceof FD) { originalXHR_send.call(this, data.toString()); } else { originalXHR_send.apply(this, arguments); } }; } })(); |
Heeft iemand een idee hoe dit enigszins netjes voor IE7 (IE6?) te doen?
Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.