worker.js
1.68 KB
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
(function () {
var alaways = function () { return true; };
var _ajax = function (settings) {
var xhr = new XMLHttpRequest();
var success = settings.success || alaways;
var fail = settings.fail || alaways;
var param = function (data) {
return Object.keys(data).reduce(function (prev, key) {
var value = data[key];
return prev + key + "=" + value + "&";
}, "").replace(/&$/, "");
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
var responseText = xhr.responseText;
if (xhr.status == 200) {
success(responseText);
} else {
fail(responseText);
}
}
};
settings.type = settings.type || "GET";
settings.data = settings.data && param(settings.data);
settings.async = settings.async || true;
var hasContent = settings.type === "GET";
if (hasContent && settings.data) {
settings.url += (~settings.url.indexOf("?") ? "&" : "?") + settings.data;
}
xhr.open(settings.type || "GET", settings.url, settings.async);
xhr.setRequestHeader("Content-type", settings.contentType || "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send(settings.data || null);
};
onmessage = function (e) {
var data = e.data;
var action = data.action,
args = data.args;
if (action === "ajax") {
args.success = function (result) {
postMessage(result);
};
_ajax(args);
}
};
}());