1.代码:
1 function ajax(options){
2 options = options || {};
3 options.type = options.type || "get";
4 data = options.data || {};
5 // 处理数据
6 var str = "";
7 for(var i in data){
8 str += `${i}=${data[i]}&`;
9 }
10 // 判断type类型拼接url
11 if(options.type == "get" || options.type == "jsonp"){
12 var d = new Date();
13 url = `${options.url}?${str}d=${d.getTime()}`;
14 }else{
15 url = options.url;
16 }
17 // console.log(`拼接后的url是${url}`);
18 // 判断type类型走jsonp还是创建ajax
19 if(options.type == "jsonp" ){
20 var script = document.createElement("script");
21 script.src = url;
22 document.body.appendChild(script);
23 // console.log(`走了jsonp的方法,url是${url}`)
24 window[data[data.colmName]] = function(responseText){
25 options.success(responseText);
26 }
27 }else{
28 var xhr;
29 //兼容性
30 if(window.XMLHttpRequest){
31 xhr = new XMLHttpRequest();
32 }else if(window.ActiveObject){
33 xhr = new ActiveXobject('Microsoft.XMLHTTP');
34 }
35 // 发送请求
36 if(options.type == "get"){
37 // console.log(`走了get的方法,url是${url}`)
38 xhr.open("get",url,true);
39 xhr.send(null)
40 }else{
41 // console.log(`走了post的方法,url是${options.url},参数是${str}`)
42 xhr.open("post",url,true);
43 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
44 xhr.send(str.slice(0,str.length-1));
45 }
46 // 接收数据
47 xhr.onreadystatechange = function(){
48 if(xhr.readyState == 4){
49 var status = xhr.status;
50 if(xhr.readyState == 4 && xhr.status == 200){
51 options.success(xhr.responseText,xhr.status);
52 }else{
53 options.error(xhr.responseText,xhr.status)
54 }
55 }
56 }
57 }
58 }
2.本地data.php中的数据:
<?php
$u = $_REQUEST["user"];
$p = $_REQUEST["pass"];
echo "这是php数据".$u ."-----".$p;
3.使用示例:
POST请求:
1 ajax({
2 url:"data.php",
3 data:{
4 user:"admin",
5 pass:23213
6 },
7 type:"post",
8 success:function(res,status){
9 console.log(res);
10 console.log(status);
11 },
12 error:function(res,status){
13 console.log(res);
14 console.log(status);
15 }
16 })
GET请求:
1 //type不传默认是get
2 ajax({
3 url:"data.php",
4 data:{
5 user:"admin",
6 pass:23213
7 },
8 success:function(res,status){
9 console.log(res);
10 console.log(status);
11 },
12 error:function(res,status){
13 console.log(res);
14 console.log(status);
15 }
16 })
JSONP:
1 //以百度搜索接口为例
2 ajax({
3 url:"https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
4 data:{
5 wd:"上海",
6 colmName:"cb",
7 cb:"adsaa"
8 },
9 success:function(res,status){
10 console.log(res);
11 console.log(status);
12 },
13 error:function(res,status){
14 console.log(res);
15 console.log(status);
16 }
17 })