加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax封装get /post

发布时间:2020-12-16 02:46:43 所属栏目:百科 来源:网络整理
导读:1 ( function (window) { 2 function AjaxTool() {} 3 4 AjaxTool.ajaxRequest = function (param,successCallback,failedCallback) { 5 // 1. 获取参数 6 var requestType = param[‘requestType‘] || ‘get‘; // 请求方式 7 var url = param[‘url‘]; /
 1 (function (window) {
 2     function AjaxTool() {}
 3 
 4     AjaxTool.ajaxRequest = function (param,successCallback,failedCallback) {
 5         // 1. 获取参数
 6         var requestType = param[‘requestType‘] || ‘get‘; // 请求方式
 7         var url = param[‘url‘];  // 请求的路径
 8         var paramObj = param[‘paramObj‘];
 9         var timeOut = param[‘timeOut‘] || 0;
10 
11         // 2. 发送请求
12         var xhr = new XMLHttpRequest();
13         // 判断
14         if(requestType.toLowerCase() === ‘get‘){ // get请求
15             var codeURL = encodeURI(url + ‘?‘ + getStrWithObject(paramObj));
16             xhr.open(‘get‘,codeURL,true);
17             xhr.send();
18         }else if(requestType.toLowerCase() === ‘post‘){ // post请求
19             var codeParam = encodeURI(getStrWithObject(paramObj));
20             xhr.open(‘post‘,url,true);
21             // 设置请求头
22             xhr.setRequestHeader(‘Content-Type‘,‘application/x-www-form-urlencoded‘);
23             xhr.send(codeParam);
24         }
25         // 监听服务器端响应
26         xhr.addEventListener(‘readystatechange‘,function (ev2) {
27            if(xhr.readyState === 4){
28                if(xhr.status === 200){
29                    // 请求成功
30                    successCallback && successCallback(xhr);
31                    // 清除定时器
32                    clearTimeout(timer);
33                }else {
34                    // 请求失败
35                    failedCallback && failedCallback(xhr);
36                }
37            }
38         });
39 
40         //  0 代表不限制请求的时间
41         var timer = null;
42         if(timeOut > 0){
43             timer = setTimeout(function () {
44                 // 取消请求
45                 xhr.abort();
46             },timeOut);
47         }
48     };
49 
50     /**
51      *  把对象转换成拼接字符串
52      * @param {Object}paramObj
53      */
54     function getStrWithObject(paramObj) {
55         var resArr = [];
56         // 1. 转化对象
57         for (var key in paramObj) {
58             var str = key + ‘=‘ + paramObj[key];
59             resArr.push(str);
60         }
61         // 2. 拼接时间戳
62         resArr.push(‘random=‘ + getRandomStr());
63 
64         // 3. 数组转成字符串
65         return resArr.join(‘&‘);
66     }
67 
68     /**
69      * 获取随机时间戳
70      * @returns {number}
71      */
72     function getRandomStr() {
73         return Math.random() + (new Date().getTime());
74     }
75 
76     window.AjaxTool = AjaxTool;
77 })(window);
 1 <script>
 2     window.addEventListener(‘load‘,function (ev) {
 3         var btn = document.getElementById(‘send‘);
 4         btn.addEventListener(‘click‘,function (ev1) {
 5 
 6             // 1. 获取用户输入的内容
 7             var account = document.getElementById(‘account‘).value;
 8             var pwd = document.getElementById(‘pwd‘).value;
 9             var paramObj = {
10                 ‘account‘: account,11                 ‘pwd‘: pwd
12             };
13 
14             var param = {
15                 ‘requestType‘: ‘post‘,16                 ‘url‘: ‘http://localhost:3000/api/five‘,17                 ‘timeOut‘: 2000,18                 ‘paramObj‘: paramObj
19             }
20 
21             // 2. 创建网络请求对象
22             AjaxTool.ajaxRequest(param,function (xhr) {
23                 console.log(‘成功‘,xhr.responseText);
24             },function () {
25                 console.log(‘失败‘)
26             })
27         });
28     });
29 </script>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读