1 //封装ajax
2 function ajax(obj) {
3 var xhr = (function () {
4 if (typeof XMLHttpRequest != 'undefined') {
5 return new XMLHttpRequest();
6 } else if (typeof ActiveXObject != 'undefined') {
7 var version = [
8 'MSXML2.XMLHttp.6.0',
9 'MSXML2.XMLHttp.3.0',
10 'MSXML2.XMLHttp'
11 ];
12 for (var i = 0; version.length; i ++) {
13 try {
14 return new ActiveXObject(version[i]);
15 } catch (e) {
16 //跳过
17 }
18 }
19 } else {
20 throw new Error('您的系统或浏览器不支持XHR对象!');
21 }
22 })();
23 obj.url = obj.url + '?rand=' + Math.random();
24 obj.data = (function (data) {
25 var arr = [];
26 for (var i in data) {
27 arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
28 }
29 return arr.join('&');
30 })(obj.data);
31 if (obj.method === 'get') obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data;
32 if (obj.async === true) {
33 xhr.onreadystatechange = function () {
34 if (xhr.readyState == 4) {
35 callback();
36 }
37 };
38 }
39 xhr.open(obj.method, obj.url, obj.async);
40 if (obj.method === 'post') {
41 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
42 xhr.send(obj.data);
43 } else {
44 xhr.send(null);
45 }
46 if (obj.async === false) {
47 callback();
48 }
49 function callback() {
50 if (xhr.status == 200) {
51 obj.success(xhr.responseText); //回调传递参数
52 } else {
53 alert('获取数据错误!错误代号:' + xhr.status + ',错误信息:' + xhr.statusText);
54 }
55 }
56 }