|
10 | 10 | <p><label>Some other field: <input name="other-field" type="text" id="other-field-id" /></label></p>
|
11 | 11 | <p><input type="submit" value="Save" /></p>
|
12 | 12 | <script>
|
| 13 | +var form = document.getElementById('form-id'); |
| 14 | +form.onsubmit = function() { |
| 15 | + var formData = new FormData(form); |
| 16 | + var action = form.getAttribute('action'); |
| 17 | + |
| 18 | + sendXHRequest(formData, action); |
| 19 | + |
| 20 | + return false; |
| 21 | +} |
| 22 | + |
13 | 23 | var uploadBtn = document.getElementById('upload-button-id');
|
14 | 24 | uploadBtn.onclick = function (evt) {
|
15 |
| - var fileInput = document.getElementById('file-id'); |
16 |
| - var file = fileInput.files[0]; |
17 | 25 | var formData = new FormData();
|
18 | 26 | var action = '/upload';
|
| 27 | + var fileInput = document.getElementById('file-id'); |
| 28 | + var file = fileInput.files[0]; |
19 | 29 | formData.append('our-file', file);
|
20 | 30 |
|
| 31 | + sendXHRequest(formData, action); |
| 32 | + |
| 33 | + return false; |
| 34 | +} |
| 35 | + |
| 36 | +function sendXHRequest(formData, uri) { |
21 | 37 | var xhr = new XMLHttpRequest();
|
22 | 38 | xhr.upload.addEventListener('loadstart', onloadstartHandler, false);
|
23 | 39 | xhr.upload.addEventListener('progress', onprogressHandler, false);
|
24 | 40 | xhr.upload.addEventListener('load', onloadHandler, false);
|
25 | 41 | xhr.addEventListener('readystatechange', onreadystatechangeHandler, false);
|
26 |
| - xhr.open('POST', action, true); |
27 |
| - xhr.send(formData); // Simple! |
28 |
| - |
29 |
| - return false; |
| 42 | + xhr.open('POST', uri, true); |
| 43 | + xhr.send(formData); |
| 44 | +} |
30 | 45 |
|
31 |
| - function onloadstartHandler(evt) { |
32 |
| - var div = document.getElementById('upload-status'); |
33 |
| - div.innerHTML = 'Upload started!'; |
34 |
| - } |
| 46 | +function onloadstartHandler(evt) { |
| 47 | + var div = document.getElementById('upload-status'); |
| 48 | + div.innerHTML = 'Upload started!'; |
| 49 | +} |
35 | 50 |
|
36 |
| - function onloadHandler(evt) { |
37 |
| - var div = document.getElementById('upload-status'); |
38 |
| - div.innerHTML = 'Upload successful!'; |
39 |
| - } |
| 51 | +function onloadHandler(evt) { |
| 52 | + var div = document.getElementById('upload-status'); |
| 53 | + div.innerHTML = 'Upload successful!'; |
| 54 | +} |
40 | 55 |
|
41 |
| - function onprogressHandler(evt) { |
42 |
| - var div = document.getElementById('progress'); |
43 |
| - var percent = evt.loaded/evt.total*100; |
44 |
| - div.innerHTML = 'Progress: ' + percent + '%'; |
45 |
| - } |
| 56 | +function onprogressHandler(evt) { |
| 57 | + var div = document.getElementById('progress'); |
| 58 | + var percent = evt.loaded/evt.total*100; |
| 59 | + div.innerHTML = 'Progress: ' + percent + '%'; |
| 60 | +} |
46 | 61 |
|
47 |
| - function onreadystatechangeHandler(evt) { |
48 |
| - var status = null; |
| 62 | +function onreadystatechangeHandler(evt) { |
| 63 | + var status = null; |
49 | 64 |
|
50 |
| - try { |
51 |
| - status = evt.target.status; |
52 |
| - } |
53 |
| - catch(e) { |
54 |
| - return; |
55 |
| - } |
| 65 | + try { |
| 66 | + status = evt.target.status; |
| 67 | + } |
| 68 | + catch(e) { |
| 69 | + return; |
| 70 | + } |
56 | 71 |
|
57 |
| - if (status == '200' && evt.target.responseText) { |
58 |
| - var result = document.getElementById('result'); |
59 |
| - result.innerHTML = '<p>The server saw it as:</p><pre>' + evt.target.responseText + '</pre>'; |
60 |
| - } |
| 72 | + if (status == '200' && evt.target.responseText) { |
| 73 | + var result = document.getElementById('result'); |
| 74 | + result.innerHTML = '<p>The server saw it as:</p><pre>' + evt.target.responseText + '</pre>'; |
61 | 75 | }
|
62 | 76 | }
|
63 | 77 | </script>
|
|
0 commit comments