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

简介: 一、Ajax的实现主要分为四部分:1、创建Ajax对象1 // 创建ajax对象2 var xhr = null;3 if(window.XMLHttpRequest){4 xhr = new XMLHttpRequest();5 } else {6 //为了兼容IE67 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 });

 

相关文章
|
1月前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
43 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
1月前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
45 0
|
2月前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
2月前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
3月前
|
JavaScript 前端开发 安全
JavaScript函数详解
JavaScript函数的详细解析,包括函数的定义和调用方式(如一般格式、匿名函数、构造函数、自调用函数、箭头函数和严格模式)、函数参数(arguments对象、可变参数、默认参数值)、闭包的概念和应用实例。
JavaScript函数详解
|
2月前
|
JavaScript 前端开发
js教程——函数
js教程——函数
48 4
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
23 2
|
2月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
32 5
|
2月前
|
JavaScript 前端开发
Node.js 函数
10月更文挑战第5天
26 3