前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >前端基础-Ajax对象

前端基础-Ajax对象

作者头像
cwl_java
发布于 2020-03-26 08:14:35
发布于 2020-03-26 08:14:35
79300
代码可运行
举报
文章被收录于专栏:cwl_Javacwl_Java
运行总次数:0
代码可运行

第2章 Ajax对象

2.1 获取对象

通过上一节我们发现,想要使用 ajax 的一系列功能,我们就必须先得到 ajax 对象

基于 W3C标准 浏览器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var xhr = new XMLHttpRequest();

基于IE内核的浏览器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var xhr = new ActiveXObject('Microsoft.XMLHTTP');
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
    var btu = document.getElementById('btu');
    btu.onclick = function(){
        //基于 W3C标准 浏览器
        var xhr = new XMLHttpRequest();
        alert(xhr);

        //基于IE内核的浏览器, W3C标准浏览器中报错
        var xhr = new ActiveXObject('Microsoft.XMLHTTP');
        alert(xhr);
    }
</script>

浏览器标准不一样,得到的对象也不一样,我们也不知道客户使用什么样的浏览器,因此,我们需要解决兼容性问题;

修改上述代码并测试,具有兼容性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
var btu = document.getElementById('btu');
btu.onclick = function(){
	try{
		var xhr =  new XMLHttpRequest()
	}catch(e){};

	try{
		var xhr = new ActiveXObject('Microsoft.XMLHTTP')
	}catch(e){};

	alert(xhr);
}
</script>

再次对代码进行修改 兼容代码封装进函数调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
    var btu = document.getElementById('btu');
    btu.onclick = function(){
        //封装进函数供其他程序调用
        function cXHR(){
            try{return new XMLHttpRequest()}catch(e){};
            try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){};
        }
        alert(cXHR());
    }
</script>

将函数写入单独的文件,共其他地方引入调用

创建createXHR.js 将函数复制到文件 createXHR.js 内并保存, 如图:

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//文件引入
<script src="createXHR.js"></script>
<script>
    var btu = document.getElementById('btu');
    btu.onclick = function(){
		//函数调用
        alert(cXHR());
    }
</script>

顺便封装一个方法: 使用id属性获取DOM对象,方便后面使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function gid(id){
    return document.getElementById(id);
}

2.2 ajax对象的属性、方法 *

火狐开发者文档: https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

2.2.1 属性
  • **readyState: Ajax状态码 * ** 0:表示对象已建立,但未初始化,只是 new 成功获取了对象,但是未调用open方法 1:表示对象已初始化,但未发送,调用了open方法,但是未调用send方法 2:已调用send方法进行请求 3:正在接收数据(接收到一部分),客户端已经接收到了一部分返回的数据 **4:接收完成,客户端已经接收到了所有数据 * **
  • status :http响应状态码 200代表成功获取服务器端数据 404未找到页面等等……
  • statusText :http响应状态文本
  • responseText:如果服务器端返回字符串,使用responseText进行接收
  • responseXML :如果服务器端返回XML数据,使用responseXML进行接收
  • onreadystatechange:当 readyState 状态码发生改变时所触发的回调函数
2.2.2 方法
  • open(method,url,[aycs]):初始化Ajax对象 (打开) method:http请求方式,get/post url:请求的服务器地址 aycs:同步与异步
  • setRequestHeader(header,value):设置请求头信息 header :请求头名称 value :请求头的值
  • xhr.getAllResponseHeaders() 获取全部响应头信息
  • xhr.getResponseHeader(‘key’) 获取指定头信息
  • send([content]) :发送Ajax请求 content : 如果是get请求时,此参数为null; 如果是post请求时,此参数就是要传递的数据 注意: 所有相关的事件绑定必须在调用send()方法之前进行.
2.2.3 同步与异步

例如,小明去餐馆排队点餐,前台服务员将小明的菜单告诉厨师进行制作,此时小明后面排队的人就一直等着, 直到厨师制作完成,把饭菜送到小明手里后离开,后面的人才能继续点餐;这就是同步处理

但是,如果前台服务员将小明的菜单告诉厨师后,服务员发给小明一个好牌去旁边等待,后面的人继续点餐, 厨师将小明的饭菜做好后,随时呼唤小明就餐;这就是异步处理

服务器的不同做法,就代表着 Ajax 的同步或异步处理; 小明就是客户端; 厨师就是后台服务器;

图示:

前台代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="createXHR.js"></script>
    <script>
        function t1(){
            var xhr = cXHR();
            xhr.onreadystatechange = function(){
                if(this.readyState == 4){
                    alert(this.responseText);
                }
            }
            //false同步
            //true 异步
            xhr.open('get','/test',false); 
            xhr.send(null);
        }
        function t2(){
            alert('t2');
        }
        t1();
        t2();
    </script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
到底什么是认证?什么是授权?
认证 (Authentication) 是根据凭据验明访问者身份的流程。即验证“你是你所说的那个人”的过程。
程序视点
2025/01/17
1310
到底什么是认证?什么是授权?
微服务[学成在线] day16:基于Spring Security Oauth2开发认证服务
要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程;如果用户要购买课程也需要知道用户的身份信息。所以,去管理学生的学习过程最基本的要实现用户的身份认证。
LCyee
2020/08/05
4.3K0
微服务[学成在线] day16:基于Spring Security Oauth2开发认证服务
微服务统一认证与授权的 Go 语言实现(上)
各位读者朋友鼠年大吉,祝各位新的一年身体健康,万事如意! 最近疫情严重,是一个特殊时期,大家一定要注意防护。很多省份推迟了企业开工的时间,大部分的互联网公司也都是下周开始远程办公。大家可以利用在家的
aoho求索
2020/02/25
3.6K0
深入聊聊微服务架构的身份认证问题
随着微服务架构的兴起,传统的单体应用场景下的身份认证和鉴权面临的挑战越来越大。单体应用体系下,应用是一个整体,一般针对所有的请求都会进行权限校验。请求一般会通过一个权限的拦截器进行权限的校验,在登录时将用户信息缓存到 session 中,后续访问则从缓存中获取用户信息。
lyb-geek
2018/07/26
1.7K0
深入聊聊微服务架构的身份认证问题
细说API - 认证、授权和凭证
遗憾的是依然有大量候选人答非所问,无法搞清楚 cookie 和 session 之间的区别。而在工作中也有让人惊讶的真实案例:把 user ID 存储到 local storage 中当做 token 使用,原因是他们声称弃用了 cookie 这种落后的东西;一个移动端项目,服务器给出的 API 中需要客户端模拟一个 cookie,从而像浏览器中 ajax 那样消费 API。
ThoughtWorks
2019/05/05
3K0
细说API - 认证、授权和凭证
微服务架构下的安全认证与鉴权
本文目录: 一、单体应用 VS 微服务 二、微服务常见安全认证方案 三、JWT介绍 四、OAuth 2.0 介绍 五、思考总结 从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度的鉴权方案?本文将会为大家阐述微服务架构下的安全认证与鉴权方案。 一、单体应用 VS 微服务 随着微服务架构的兴起,传统的单体应用场景下
yuanyi928
2018/03/30
3.6K0
微服务架构下的安全认证与鉴权
.Net 鉴权授权
通过在nginx或者代码中写死token,或者通过在限制外网访问的方式已来达到安全授权的方式
郑小超.
2018/12/25
1.5K0
认证授权的设计与实现
每个网站,小到一个H5页面,必有一个登录认证授权模块,常见的认证授权方式有哪些呢?又该如何实现呢?下面我们将来讲解SSO、OAuth等相关知识,并在实践中的应用姿势。
ruochen
2021/11/25
1.3K0
基于Token的WEB后台认证机制
原文地址:http://www.cnblogs.com/xiekeli/p/5607107.html
j_bleach
2019/07/02
2.2K0
基于Token的WEB后台认证机制
认证鉴权也可以如此简单—使用API网关保护你的API安全
随着企业数字化进程的发展,企业正在大量使用 API 来连接服务和传输数据,API 在带来巨大便利的同时也带来了新的安全问题,被攻击的 API 可能导致重要数据泄漏并对企业业务造成毁灭性影响。因此,API 安全正受到业界和学术界的广泛关注。
克莱尔小熊
2021/12/26
10.6K2
认证鉴权也可以如此简单—使用API网关保护你的API安全
基于 Token 的 WEB 后台认证机制
作者:红心李(https://home.cnblogs.com/u/xiekeli/) 链接:http://www.cnblogs.com/xiekeli/p/5607107.html 几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下
前端教程
2018/03/05
2.6K0
基于 Token 的 WEB 后台认证机制
关于Web验证的几种方法
验证(Authentication)是具备权限的系统验证尝试访问系统的用户或设备所用凭据的过程。相比之下,授权(Authorization)是给定系统验证是否允许用户或设备在系统上执行某些任务的过程。 简单地说: 身份验证:你是谁? 授权:你能做什么? 身份验证先于授权。也就是说,用户必须先处于合法状态,然后才能根据其授权级别被授予对资源的访问权限。验证用户身份的最常见方法是用户名和密码的组合。用户通过身份验证后,系统将为他们分配不同的角色,例如管理员、主持人等,从而为他们授予一些特殊的系统权限。 接下来,我们来看一下用于用户身份验证的各种方法。
程序狗
2021/12/09
3.9K0
从五个方面入手,保障微服务应用安全
随着计算机、互联网技术的飞速发展,信息安全已然是一个全民关心的问题,也是各大企业非常重视的问题。企业一般会从多个层次着手保障信息安全,如:物理安全、网络安全、系统安全(主机和操作系统)、应用安全等。
yuanyi928
2019/08/21
2.7K0
从五个方面入手,保障微服务应用安全
对比授权机制,你更想用哪种?
授权机制,当我们说到这个问题的时候,大家对它的第一印象是在哪个地方呢?是不是曾经某培训机构教授的 SSO 单点登录的,是的没错,而这种 SSO 的单点登录在当年的培训机构中,使用的就是 Session 共享,也就是用 Redis 做中间模拟 Session ,但是授权机制真的有这么简单么?接下来阿粉就来强势对比一下关于授权机制了。
Java极客技术
2022/12/02
6680
对比授权机制,你更想用哪种?
常见登录认证 DEMO
basic auth 是最简单的一种,将用户名和密码通过 form 表单提交的方式在 Http 的 Authorization 字段设置好并发送给后端验证
JS菌
2019/07/30
2.8K0
开发中需要知道的相关知识点:什么是 OAuth?
从高层次开始,OAuth 不是API或服务:它是授权的开放标准,任何人都可以实施它。
用户1418987
2023/10/16
3560
开发中需要知道的相关知识点:什么是 OAuth?
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
认证和授权是安全验证中的两个重要概念。认证是确认身份的过程,用于建立双方之间的信任关系。只有在认证成功的情况下,双方才可以进行后续的授权操作。授权则是在认证的基础上,确定用户或系统对资源的访问权限。
努力的小雨
2023/11/11
1.7K0
一口气说出前后端 10 种鉴权方案~
在介绍鉴权方法之前,我们先要了解的是:什么是认证、授权、鉴权、权限控制以及他们之间的关系,有了他们做铺垫,那么我们才能做到从始至终的了解透彻 ~
终码一生
2022/10/28
6.7K1
一口气说出前后端 10 种鉴权方案~
【我在拉勾训练营学技术】OAuth2+JWT 实现权限验证
1、基于 Session 的认证⽅式在分布式的环境下,基于 session 的认证会出现⼀个问题,每个应⽤服务都需要在session中存储⽤户身份信息,通过负载均衡将本地的请求分配到另⼀个应⽤服务需要将 session 信息带过去,否则会重新认证。我们可以使⽤ Session 共享、Session 黏贴等⽅案。Session ⽅案也有缺点,⽐如基于 cookie ,移动端不能有效使⽤等
程序员爱酸奶
2021/01/18
1.6K0
[译] 深入 OAuth2.0 和 JWT
从基于计算机的应用出现伊始,几乎每个开发者在其职业生涯内都会面对的一个最常见也是最复杂的问题,就是安全性(security)。这类问题意味着要考虑理解由谁提供什么数据/信息,此外还有关乎时间、校验、再校验等诸如此类的很多其他方面的事情。
江米小枣
2020/06/15
3.2K0
相关推荐
到底什么是认证?什么是授权?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文