码迷,mamicode.com
首页 > Web开发 > 详细

ajax请求的原生js实现

时间:2019-02-17 20:47:59      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:||   argument   error:   一个   jquer   http   type   格式   xmlhttp   

我们使用ajax请求一般都用的jQuery, axios封装好了的api, 那么如果只能用原生js, 我们该如何操作了? 上代码.

我们在同目录下写好一个json文件(data.json)用于请求测试

 1 const ajax = function() {
 2   var ajaxData = {
 3     type: arguments[0].type || ‘GET‘,
 4     url: arguments[0].url,
 5     async: arguments[0].async || true,
 6     data: arguments[0].data|| null,    
 7     dataType: arguments[0].dataType || ‘json‘,    
 8     contentType: arguments[0].contentType || ‘application/x-www-form-urlencoded‘,  
 9     beforeSend: arguments[0].beforeSend || function(){}, 
10     success: arguments[0].success || function(){}, 
11     error: arguments[0].error || function(){}  
12   }
13   // 执行发起请求前要执行的操作
14   ajaxData.beforeSend();
15 
16   var xhr = createxmlHttpRequest();
17   xhr.responseType = ajaxData.dataType;
18   // 建立连接
19   xhr.open(ajaxData.type, ajaxData.url, ajaxData.async);
20   xhr.setRequestHeader(‘Content-Type‘, ajaxData.contentType);
21   // 发送请求
22   xhr.send(convertData(ajaxData.data));
23   xhr.onreadystatechange = function() {
24     if (xhr.readyState == 4) {
25       if (xhr.status == 200) {
26         ajaxData.success(xhr.response)
27       } else {
28         ajaxData.error()
29       }
30     }
31   }
32 
33   // 创建xhr对象, 兼容IE6
34   function createxmlHttpRequest() {  
35     if (window.ActiveXObject) {  
36       return new ActiveXObject("Microsoft.XMLHTTP");  
37     } else if (window.XMLHttpRequest) {  
38       return new XMLHttpRequest();  
39     }  
40   }
41 
42   // 将json格式转换成字符串
43   function convertData(data){ 
44     if( typeof data === ‘object‘ ){ 
45       var convertResult = "" ;  
46       for(var c in data){  
47         convertResult+= c + "=" + data[c] + "&";  
48       }  
49       convertResult = convertResult.substring(0,convertResult.length-1) 
50       return convertResult; 
51     }else{ 
52       return data; 
53     } 
54   }
55       
56    
57 }

怎么用?

 1 ajax({
 2   type: ‘GET‘,
 3   url: ‘./data.json‘,
 4   dataType: ‘json‘,
 5   data: {},
 6   beforeSend: function() {
 7     console.log(‘我是请求前的操作‘)
 8   },
 9   success: function(data) {
10     console.log(data)
11   },
12   error: function() {
13     console.log(‘请求失败‘)
14   }
15 })

 

ajax请求的原生js实现

标签:||   argument   error:   一个   jquer   http   type   格式   xmlhttp   

原文地址:https://www.cnblogs.com/spotman/p/10392430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!