开发者社区> 半指温柔乐> 正文

第110天:Ajax原生js封装函数

简介: 一、Ajax的实现主要分为四部分: 1、创建Ajax对象 1 // 创建ajax对象 2 var xhr = null; 3 if(window.XMLHttpRequest){ 4 xhr = new XMLHttpRequest(); 5 } else { 6 //为了兼容IE6 7 xhr = new ActiveXObject('Microsoft.
+关注继续查看

一、Ajax的实现主要分为四部分:

1、创建Ajax对象

1 // 创建ajax对象
2 var xhr = null;
3 if(window.XMLHttpRequest){
4     xhr = new XMLHttpRequest();
5 } else {
6     //为了兼容IE6
7     xhr = new ActiveXObject('Microsoft.XMLHTTP');
8 }

2、连接服务器

// 连接服务器open(方法GET/POST,请求地址, 异步传输)
xhr.open('GET',  'data.txt',  true);

3、发送请求

// 发送请求
xhr.send();

4、接收返回数据

 1 // 处理返回数据
 2 /*
 3 ** 每当readyState改变时,就会触发onreadystatechange事件
 4 ** readyState属性存储有XMLHttpRequest的状态信息
 5 ** 0 :请求未初始化
 6 ** 1 :服务器连接已建立
 7 ** 2 :请求已接受
 8 ** 3 : 请求处理中
 9 ** 4 :请求已完成,且相应就绪
10 */
11 xhr.onreadystatechange = function(){
12     if(xhr.readyState == 4){
13         /*
14         ** Http状态码
15         ** 1xx :信息展示
16         ** 2xx :成功
17         ** 3xx :重定向
18         ** 4xx : 客户端错误
19         ** 5xx :服务器端错误
20         */
21         if(xhr.status == 200){
22             success(xhr.responseText);
23         } else {
24             if(failed){
25                 failed(xhr.status);
26             }
27         }
28     }
29 }

二、Ajax封装函数:

 1 function Ajax(type, url, data, success, failed){
 2     // 创建ajax对象
 3     var xhr = null;
 4     if(window.XMLHttpRequest){
 5         xhr = new XMLHttpRequest();
 6     } else {
 7         xhr = new ActiveXObject('Microsoft.XMLHTTP')
 8     }
 9  
10     var type = type.toUpperCase();
11     // 用于清除缓存
12     var random = Math.random();
13  
14     if(typeof data == 'object'){
15         var str = '';
16         for(var key in data){
17             str += key+'='+data[key]+'&';
18         }
19         data = str.replace(/&$/, '');
20     }
21  
22     if(type == 'GET'){
23         if(data){
24             xhr.open('GET', url + '?' + data, true);
25         } else {
26             xhr.open('GET', url + '?t=' + random, true);
27         }
28         xhr.send();
29  
30     } else if(type == 'POST'){
31         xhr.open('POST', url, true);
32         // 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。
33         xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
34         xhr.send(data);
35     }
36  
37     // 处理返回数据
38     xhr.onreadystatechange = function(){
39         if(xhr.readyState == 4){
40             if(xhr.status == 200){
41                 success(xhr.responseText);
42             } else {
43                 if(failed){
44                     failed(xhr.status);
45                 }
46             }
47         }
48     }
49 }
50  
51 // 测试调用
52 var sendData = {name:'asher',sex:'male'};
53 Ajax('get', 'data/data.html', sendData, function(data){
54     console.log(data);
55 }, function(error){
56     console.log(error);
57 });

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
简述Ajax,以及使用原生js书写Ajax案例
简述Ajax,以及使用原生js书写Ajax案例
33 0
原生AJAX实现异步请求
原生AJAX实现异步请求
45 0
【Ajax入门技术】原生AJAXexpress的基本使用,进行不刷新页面获取到数据
【Ajax入门技术】原生AJAXexpress的基本使用,进行不刷新页面获取到数据
30 0
原生js对Ajax封装
原生js对Ajax封装
58 0
不如封装一个原生Ajax
我们常常引用jq就是为了使用上面的ajax,方便又实用。但是jq文件一个高达几十kb,还有近几年jq的发展趋势不容乐观,jq中还迟迟没有改进。于是自己造轮子,下面封装了原生JS ajax 。你可以直接复制拿过来用。
57 0
详解原生Ajax的实现,并模仿JQuery进行封装(上)
对于Ajax,肯定很多小伙伴都听过甚至用过了,那么没听过的也不用着急,本文会对Ajax进行讲解,其次,一定还有一些人只用过JQuery封装好了的Ajax却对原生的Ajax并不了解,那么也不用着急,本文从最基本的Ajax开始讲起,然后最后会尽可能得模仿JQuery对其进行封装,让我刚才提到的两类人能对Ajax有进一步的了解。
59 0
前端培训-中级阶段(9)-原生Ajax的运行原理与实现
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。 ajax 对于现在的前端来说已经是一件必需品了。单页应用?前后端分离?远程搜索?异步加载?能做的功能太多了。 当然,一直以来我们都是用一些封装好的api去使用(jQuery.ajax 、axios)。今天我们就来了解原生的Ajax。
86 0
+关注
半指温柔乐
热衷于研究前端新知识,学习新技术。精通HTML5+CSS3,Javascript,jQuery,Angular,Bootstrap。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Javascript异步编程
立即下载
Javascript中的对象
立即下载
JS零基础入门教程(上册)
立即下载