1 function ajax(option) {
2 //没有url 直接退出;
3 if(!option.url){
4 alert('请输入正确的URL');
5 return;
6 }
7 //若没有输入url地址,则直接提示
8 var type = option.type || 'GET';
9 //给获取方式默认值get||opti方式on.type为设置的获取
10 var url = option.url;
11 //路径
12 var async = option.async || true;
13 //设置同步或异步,同步为flase,异步为true;默认值为true
14 var success = option.success || function () {};
15 //服务器成功向前台发送数据后执行的回调函数;
16 if (XMLHttpRequest) {
17 var xhr = new XMLHttpRequest();
18 }else {
19 var xhr = new ActiveXObject('Microsoft.XMLHTTP');
20 }
21 //解决IE6不兼容问题
22 var data = option.data || '';
23 //data为浏览器向服务器发送的数据
24 var dataType = option.dataType || 'text';
25 //判断发送的数据格式
26 var dataStr='';
27 //定义一个变量,用于储存浏览器发送的数据
28 if(data){
29 if(typeof data == 'string'){
30 dataStr = data;
31 //若发送的数据的数据类型为String,则直接将该数据保存至变量datstr中
32 }else{
33 //若发送的数据类型为josn格式
34 for(var i in data){
35 //用遍历对象的方法遍历json数据
36 dataStr += i+'=' +data[i] +'&';
37 //用字符串拼接的方式,将json格式的数据拼写成相应的格式;eg:(name="xxx"&password:"xxx"&)
38 }
39 dataStr = dataStr.slice(0,-1);
40 //使用字符串内的方法:slice();将字符截取;去掉末尾的&符号
41 }
42 }
43 //判断判断信息获取的方式
44 if(type.toUpperCase() == 'GET'){
45 //为get的情况
46 if(data){
47 //若data有值
48 xhr.open(type,url+'?'+dataStr,async);
49 //将数据写在url中,通过字符串拼接的方式给些成正确的格式;
50 }else{
51 //若data没有值
52 xhr.open(type,url,async);
53 //地址栏不做修改
54 }
55 //send方法向后抬发送数据;
56 xhr.send();
57 }
58 if(type.toUpperCase() == 'POST'){
59 //判断获取的类型为post时
60 xhr.open(type,url,async);
61 //直接使用open方法向后台发送请求
62 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
63 //填写请求头
64 xhr.send(dataStr);
65 //将处理完成的数据发送至后台
66 }
67 xhr.onreadystatechange = function () {
68 //开始事件监听
69 if (xhr.readyState == 4 ) {
70 //xhr.readyState===4时,代表数据发送成功
71 if(xhr.status == 200){
72 //xhr.status的值为200时,代表浏览器请求被正确接收,处理.
73 if(dataType.toUpperCase() == 'TEXT'){
74 //判断dateType的响应数据类型;
75 success(xhr.responseText)
76 //若dateType为字符串形式的响应数据,将此报文作为success()函数的实参进行回调函数;
77 }else if(dataType.toUpperCase() =='XML'){
78 //若获得的数据类型为XML形式的响应数据
79 success(xhr.responseXML)
80 //将此数据作为success()函数的参数进行回调;
81 }else if(dataType.toUpperCase()=='JSON'){
82 //若获得的数据类型为JSON形式的响应数据;
83 success(JSON.parse(xhr.response));
84 //使用JSON.parse方法处理数据,并将处理好的数据作为success()的参数进行回调
85 }
86
87 }else if(xhr.status==404){
88 //若http状态码为404则代表请求的引用文档不存在;
89 alert('请求失败');
90 }
91 }
92 };
93
94 }