1 | | // ----- main exported object |
2 | | // --------------------------------------- |
3 | 1 | var ajax = module.exports = {}; |
4 | | |
5 | | |
6 | | // ----- reusable response methods |
7 | | // --------------------------------------- |
8 | 1 | function onload(req, fn) { |
9 | 0 | if (req.status >= 200 && req.status < 400) { |
10 | 0 | var text = req.responseText; |
11 | 0 | var data = req.responseType === 'json' ? JSON.parse(text) : text; |
12 | 0 | return fn(null, data); |
13 | | } |
14 | | else { |
15 | 0 | return fn(new Error('Server returned an error')); |
16 | | } |
17 | | }; |
18 | | |
19 | 1 | function onerror(fn) { |
20 | 0 | return fn(new Error('Connection error')); |
21 | | } |
22 | | |
23 | | |
24 | | // ----- GET requests |
25 | | // --------------------------------------- |
26 | 1 | ajax.get = function(url, fn) { |
27 | | |
28 | 0 | var req = new XMLHttpRequest(); |
29 | | |
30 | 0 | req.open('GET', url, true); // method, url, async boolean |
31 | | |
32 | 0 | req.onload = onload(req, fn); |
33 | 0 | req.onerror = onerror(fn); |
34 | | |
35 | 0 | req.send(); |
36 | | |
37 | | }; |
38 | | |
39 | | |
40 | | // ----- POST requests |
41 | | // --------------------------------------- |
42 | 1 | ajax.post = function(url, data, fn) { |
43 | | |
44 | 0 | var req = new XMLHttpRequest(); |
45 | | |
46 | 0 | req.open('POST', url, true); |
47 | 0 | req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); |
48 | | |
49 | 0 | req.onload = onload(req, fn); |
50 | 0 | req.onerror = onerror(fn); |
51 | | |
52 | 0 | req.send(data); |
53 | | |
54 | | }; |