面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

2024-07-12 1119阅读

// 3. 设置 Content-Type 属性(固定写法)

xhr.setRequestHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’);

// 4. 调用 send(),同时将数据以查询字符串的形式,提交给服务器

xhr.send(‘bookname=水浒传&author=施耐庵&publisher=天津图书出版社’);

// 5. 监听 onreadystatechange 事件

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200) {

console.log(xhr.responseText);

}

}


(2)数据交换格式

2.1 什么是数据交换格式

1️⃣ 数据交换格式,就是服务器端与客户端之间进行数据传输与交换的格式;

2️⃣ 前端领域,经常提及的两种数据交换格式分别是 XML 和 JSON。其中 XML 用的非常少,所以,我们重点要学习的数据交换格式就是 JSON;

2.2 XML

XML 的英文全称是 EXtensible Markup Language,即可扩展标记语言。因此,XML 和 HTML 类似,也是一种标记语言。但是,它们两者之间没有任何的关系;

😆XML和HTML的区别😆:

  • HTML 被设计用来描述网页上的内容,是网页内容的载体;

  • XML 被设计用来传输和存储数据,是数据的载体;

    😆XML的缺点😆:

    • XML 格式臃肿,和数据无关的代码多,体积大,传输效率低;

    • 在 Javascript 中解析 XML 比较麻烦;

      2.3 JSON
      2.3.1 什么是JSON

      1️⃣ 概念:JSON 的英文全称是 JavaScript Object Notation,即“JavaScript 对象表示法”。简单来讲,JSON 就是 Javascript 对象和数组的字符串表示法,它使用文本表示一个 JS 对象或数组的信息,因此,JSON 的本质是字符串;

      2️⃣ 作用:JSON 是一种轻量级的文本数据交换格式,在作用上类似于 XML,专门用于存储和传输数据,但是 JSON 比 XML 更小、更快、更易解析;

      3️⃣ 现状:JSON 是在 2001 年开始被推广和使用的数据格式,到现今为止,JSON 已经成为了主流的数据交换格式;

      2.3.2 JSON的两种结构

      JSON 就是用字符串来表示 Javascript 的对象和数组。所以,JSON 中包含对象和数组两种结构,通过这两种结构的相互嵌套,可以表示各种复杂的数据结构;

      1️⃣ 对象结构:对象结构在 JSON 中表示为 { } 括起来的内容。数据结构为 { key: value, key: value, … } 的键值对结构。其中,key 必须是使用英文的双引号包裹的字符串,value 的数据类型可以是数字、字符串、布尔值、null、数组、对象6种类型;

      代码演示如下:

      {

      “name”: “zs”,

      “age”: 20,

      “gender”: “男”,

      “address”: null,

      “hobby”: [“吃饭”, “睡觉”, “写博客”]

      }

      2️⃣ 数组结构:数组结构在 JSON 中表示为 [ ] 括起来的内容。数据结构为 [ “java”, “javascript”, 30, true … ] 。数组中数据的类型可以是数字、字符串、布尔值、null、数组、对象6种类型;

      代码演示如下:

      [ “java”, “python”, “php” ]

      [ 100, 200, 300.5 ]

      [ true, false, null ]

      [ { “name”: “zs”, “age”: 20}, { “name”: “ls”, “age”: 30} ]

      [ [ “苹果”, “榴莲”, “椰子” ], [ 4, 50, 5 ] ]

      2.3.3 JSON语法注意事项
      1. 属性名必须使用双引号包裹;

      2. 字符串类型的值必须使用双引号包裹;

      3. JSON 中不允许使用单引号表示字符串;

      4. JSON 中不能写注释;

      5. JSON 的最外层必须是对象或数组格式;

      6. 不能使用 undefined 或函数作为 JSON 的值;

      JSON 的作用:在计算机与网络之间存储和传输数据;

      JSON 的本质:用字符串来表示 Javascript 对象数据或数组数据;

      2.3.4 JSON和JS对象的关系

      JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串;

      代码演示如下:

      //这是一个对象

      var obj = {a: ‘Hello’, b: ‘World’}

      //这是一个 JSON 字符串,本质是一个字符串

      var json = ‘{“a”: “Hello”, “b”: “World”}’

      2.3.5 JSON和JS对象的互转

      1️⃣ 要实现从 JSON 字符串转换为 JS 对象,使用 JSON.parse() 方法:

      var obj = JSON.parse(‘{“a”: “Hello”, “b”: “World”}’)

      //结果是 {a: ‘Hello’, b: ‘World’}

      2️⃣ 要实现从 JS 对象转换为 JSON 字符串,使用 JSON.stringify() 方法:

      var json = JSON.stringify({a: ‘Hello’, b: ‘World’});

      //结果是 ‘{“a”: “Hello”, “b”: “World”}’

      2.3.6 序列化和反序列化

      1️⃣ 把数据对象转换为字符串的过程,叫做序列化,例如:调用 JSON.stringify() 函数的操作,叫做 JSON 序列化;

      2️⃣ 把字符串转换为数据对象的过程,叫做反序列化,例如:调用 JSON.parse() 函数的操作,叫做 JSON 反序列化;


      (3)XMLHttpRequest Level2的新特性

      3.1 认识XMLHttpRequest Level2

      😆旧版XMLHttpRequest的缺点😆:

      1. 只支持文本数据的传输,无法用来读取和上传文件;

      2. 传送和接收数据时,没有进度信息,只能提示有没有完成;

      😆XMLHttpRequest Level2的新功能😆:

      1. 可以设置 HTTP 请求的时限;

      2. 可以使用 FormData 对象管理表单数据;

      3. 可以上传文件;

      4. 可以获得数据传输的进度信息;

      3.2 设置HTTP请求时限

      有时,Ajax 操作很耗时,而且无法预知要花多少时间。如果网速很慢,用户可能要等很久。新版本的 XMLHttpRequest 对象,增加了 timeout 属性,可以设置 HTTP 请求的时限:

      xhr.timeout = 3000;

      上面的语句,将最长等待时间设为 3000 毫秒。过了这个时限,就自动停止HTTP请求。与之配套的还有一个 timeout 事件,用来指定回调函数:

      xhr.ontimeout = function(event){

      alert(‘请求超时啦!’)

      }

      代码演示如下:

      3.3 FormData对象管理表单数据

      1️⃣ Ajax 操作往往用来提交表单数据。为了方便表单处理,HTML5 新增了一个 FormData 对象,可以模拟表单操作;

      代码演示如下:

      2️⃣ FormData对象也可以用来获取网页表单的值,代码演示如下::

      提交

      4.4 代码演示:上传文件

      新版 XMLHttpRequest 对象,不仅可以发送文本信息,还可以上传文件;

      实现步骤:

      1. 定义 UI 结构;

      2. 验证是否选择了文件;

      3. 向 FormData 中追加文件;

      4. 使用 xhr 发起上传文件的请求;

      5. 监听 onreadystatechange 事件;

      完整代码演示如下:

      Document

      上传文件

      4.5 代码演示:显示文件上传进度

      新版本的 XMLHttpRequest 对象中,可以通过监听 xhr.upload.onprogress 事件,来获取到文件的上传进度;

      完整代码演示如下:

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

      如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)

      面试必问公司的问题,Ajax进阶篇01---Ajax加强(含大量代码演示,前端未来路在何方

      一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

      AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

      图片转存中…(img-S4XanPQT-1712369720535)]

      [外链图片转存中…(img-FEqx5Wyu-1712369720535)]

      [外链图片转存中…(img-gCmu5Ejz-1712369720535)]

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

      如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)

      [外链图片转存中…(img-c3EuUM1f-1712369720536)]

      一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

      AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]