fetchbrand.js
2.4 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/**
* 抓取品牌数据
* @return {[type]} [description]
*/
function render(template, data) {
return template.replace(regexp, function(fullMatch, capture) {
if (data[capture]) {
return data[capture];
} else {
return '';
}
});
}
function FetchBrand(params, callback) {
var request = new XMLHttpRequest();
request.open('POST', params.url, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Accept', 'application/json, text/javascript');
request.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status >= 200 && this.status < 400) {
var resp = this.responseText;
callback(resp);
} else {
return;
}
}
};
var tempdata = params.data;
var senddata = '';
for (var k in tempdata) {
if (typeof k !== 'undefined') {
senddata += '&' + k + '=' + tempdata[k];
}
}
senddata = senddata.substr(1);
request.send(senddata);
request = null;
}
var memoryCache = {};
var CACHE_TTL = 86400000,
CACHE_PREFIX = 'brand';
/**
* 将数据放入缓存
* @param {[type]} mykey [description]
* @param {[type]} data [description]
*/
function setCache(mykey, data) {
var stamp, obj;
stamp = Date.now();
obj = {
date: stamp,
data: data
};
localStorage.setItem(CACHE_PREFIX + mykey, JSON.stringify(obj));
memoryCache[mykey] = obj;
}
/**
* 从缓存取数据
* @param {[type]} mykey [description]
* @return {[type]} [description]
*/
function getCached(mykey) {
var key, obj;
key = CACHE_PREFIX + mykey;
if (memoryCache[key]) {
if (memoryCache[key].date - Date.now() > CACHE_TTL) {
localStorage.removeItem(key);
delete(memoryCache[key]);
return false;
}
return memoryCache[key].data;
}
obj = localStorage.getItem(key);
if (obj) {
obj = JSON.parse(obj);
if (Date.now() - parseInt(obj.date, 10) > CACHE_TTL) {
localStorage.removeItem(key);
delete(memoryCache[key]);
return false;
}
memoryCache[key] = obj;
return obj.data;
}
}
exports.FetchBrandDataInfo = function(query, data, callback) {
//var cached;
//cached = getCached(query + data.data.start + data.data.brandcat);
//if (cached) {
// callback(cached);
//} else {
FetchBrand(data, function(datacallback) {
datacallback = JSON.parse(datacallback);
if (datacallback.code === 200) {
callback(datacallback);
//setCache(query + data.data.start + data.data.brandcat, datacallback);
}
});
//}
};