Ajax:回忆与节点

        一点回忆

        面对我的Ajax学习,实现前后端交互,最开始我采用的使用网络寻找intellij IDEA Ultimate破解方法,然后最终成功,然后按照相关教程配置java ee项目,然后中间又去配置了Tomcat服务器,然后又去学习了一点jsp以及servlet的相关知识,最终我无法实现从第一个jsp页面跳转到其他Ajax交互实现方法的jsp页面而告终。

        尽管我的第一次尝试挺轻松的,直到我不用写后端,直接把后端的jar包发给我,相应的接口文档也有介绍,只能说,当时确实被打击到了,觉得似乎前端不是很难,难度直接从100变成10,当时就给我干懵了,我前前后后用了几天配置环境等等,最后告诉我,我那些都用不上了,然后我用了二十分钟实现了需求。

        直到今天,我了解到为什么JavaScript是单线程,以及它的效率不高,还有同步等等问题,我只能说,它这个东西一点都不简单,小看它了,也是给我提了个很强烈的醒,不要失去敬畏之心。

        在我第一次验收的时候,我似乎是走歪了路,我对Ajax的重要的技术点漏了很多,然后之后又想补上漏了的知识点,然后似乎又有点偏激了,直接开始抄写文档了,学习了XMLHttpRequest(XHR)的每一个属性,标准属性与非标准属性,还有继承而来的属性,以及非继承的属性,现在想想,确实是太偏激了,应该止于了解常用的,现阶段不该太深入的,然后就是用了这么久,学习了接近一个月的在校时间,可能就是因为开学了之后浮躁了好多,然后现在我用这么久才学了一个Ajax。不过,也是长记性了,博客需要每周都写,不然容易忘记自己的阶段情况,容易堕落了,这个写博客的习惯,我觉得有必要延续到以后写工作。

然后下面就是我的Ajax笔记,作为一个节点留下为自己作为纪念。

思维导图+二维表

 

比较内容

XMLHttpRequest

jQuery

axios

是什么

Ajax 功能实现依赖的对象

一个 js 的代码库,一个轻量级的框架

一个基于 Promise 的网络请求库

有什么用

通过 HTTP 在浏览器和 web 服务器之间收发 XML 或其他数据

封装了 JavaScript 的基本内容

可以用在浏览器和 node.js 中,但是符合最新的 ES 规范

哪里用

进行前后端交互的地方

快速获取文档元素,提供漂亮的页面动态效果,创建 AJAX 无刷新网页

可以用在浏览器和 node.js 中

怎么用

写在 js 代码中,通过创建对象,设置标头,发送

针对选择器和事件处理

从浏览器创建 XHR,从 node.js 创建 http 请求

封装有什么不同

主要封装了 ES、DOM、BOM,只有很小一部分是 ajax

本质上就是 ajax,简单来说就是发送 http 请求的(GET 和 POST)

比较项目

普通文件

XML 文件

JSON 文件

是什么

计算机中用来存储和组织数据的基本单位

同样是基本单位,但是它有自己的规范要求

是基于ECMAScript的一个子集设计的,是一种开放标准的文件格式和数据交换格式

为什么

系统设置,存储任意内容

只针对规范进行存储

简洁和清晰的层次结构有效提升了网络传输效率,易于人认识,易于机器解析和生成,与服务器之间的 web 应用程序的数据交换很好

哪里使用

存储任意数据

存储指定数据,比如列表、json 字符串等等

存储指定的 JSON 结构的数据序列

怎么使用

通过记事本或其他文本编辑器

同样是通过记事本或其他文本编辑器

通过记事本或文本编辑器

JavaScript 中,同步(Synchronous)和异步(Asynchronous)是两种处理代码执行顺序的主要方式。

比较项目

同步 JavaScript

异步 JavaScript

what

前一个任务结束后再执行后一个任务,程序执行顺序与任务的排列顺序是一致同步的

不按照代码顺序执行,一个异步过程不再与原有的序列有顺序关系,程序的执行顺序与任务的排列顺序是不一致的

why

这是 js 语言自身的特定,所以他是单线程

从主线程发射一个子线程来完成任务

where

正常的嵌入 HTML 或者单独的 js 文件

同样嵌入 HTML 或者 js

how

直接嵌入到 HTML 文件中

只有在进行 Ajax 调用的意义上是异步

比价项目

阻塞

非阻塞

what

调用(函数),(函数)没有接收完数据或者没有得到结果之前,不会返回。

调用(函数),(函数)立即返回,通过select通知调用者

why

线程进入了不可执行状态,此时,CPU 不会给线程分配时间片,即线程暂停运行

不能立刻得到结果返回之前,该调用不会阻塞当前线程

where

调用者等待返回结果

调用者等待返回结果

how

常常出现在多线程编程,比如 Thread.sleep,还有 Object.wait

常常出现等待异步操作完成时保持响应,而不是阻塞整个应用程序。比如:

1.回调函数

2.Promise 对象

3.事件循环和 setTimeout

XMLHttpRequest

构造函数

实例方法

属性

事件

what

一个特殊的方法,用来实例化一个对象

XMLHttpRequest 这个类封装的方法

它是这个对象的特性或者说数据成员

一个代表性的事情

why

因为不调用构造或其他方式获得一个对象的话,什么都干不了

不能只有一个人,而没有这个人生存的方法

因为它的存在是为了更好的表示方法的状态等等

触发对象具有的事情,然后会有返回值,此时就可以更轻松的让计算机弄懂它怎么了

where

在要进行前后端交互:准备对象

对象进行操作

直接就是对象然后.属性

直接就是判断对应的事件的返回值,然后就可以了

how

var xhr = new XMLHttpRequest()

xhr.open()/xhr.send()

比如 onreadystatechange 属性,然后 xhr.onreadystatechange = function(){

if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200){

console.log(xhr.responseText);

}

}

比如:

function doSomething() {

if (request.readyState == 4) {

// 处理响应数据

}

}

比较方法

open

setRequestHeader

send

what

使用 XHR 对象时首先调用的方法

js 中用于设置头部信息的函数

一个用来发送 HTTP 请求的方法

why

初始化一个请求

发送 Ajax 请求前,需要先设置请求头(自定义)

设置好要发送到后端的数据,需要有发送这一步,就像发送邮件一样

where

需要一个请求的地方

在 open 方法与 send 方法之间

在你设置完你要发送的东西,以及指定好指定的发送格式以及返回格式之后

how

使用这个方法,填入对应的参数,请求方法,URL,是否异步

xhr.setRequestHearder(header, value);

header 参数是 HTTP 请求头部字段的字符串,value 参数是与 header 关联的值。

header 可以写 Content-Type 用来指定发送到服务器的数据类型;Accept:指定客户端可以接收到的内容数据类型,可以写 application/json 还有字符串数字日期和时间等等

xhr.send()

send 中可以写空,也可以写 null;在使 get 或者 HEAD 方法的时候应该写 null ,也可以不写,不写的话会被默认为 null;

然后这个还和请求是同步或者异步有一定的关系,如果是同步的话,需要到它全部完成才会返回,如果是异步的话,直接就会返回。

如果没有设置过标头的话,就是 Accept 头部信息,就会发送“*/*”的 Accept 头部。

role

创造者

装修工

信使

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1688:开启跨境电商新篇章

引言 在全球化贸易不断深化的今天,跨境电商已成为中小企业拓展国际市场的重要渠道。1688,作为阿里巴巴集团旗下领先的内贸平台,近年来也逐渐发力跨境电商领域,为全球买家提供了一个直通中国工厂的贸易平台。本文将带您深入了解16…

2024-12-06 Unity Addressables3——资源加载

文章目录 1 引用加载1.1 Addressables 的资源引用类1.2 加载资源1.3 加载场景1.4 释放资源 2 Label 介绍3 动态加载3.1 加载单个资源3.2 加载多个资源 Unity 版本:6000.0.26f1c1Addressables 版本:2.3.1 1 引用加载 1.1 Addressables 的资源引用类 Ass…

相机动态/在线标定

图1 图2 基本原理 【原理1】平行线在射影变换后会交于一点。如图所示,A为相机光心,蓝色矩形框为归一化平面,O为平面中心。地面四条黄色直线为平行且等距的车道线。HI交其中两条车道线于H、I, 过G作HI的平行线GM交车道线于M。HI、GM在归一化平面上的投影分别为JK、PN,二者会…

工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法

工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法 SolidWorks从3D文件导出2D的DWG或2D DXF类型文件方法(一)打开3D文件(二)从装配体到工程图(三)拖出想要的角度的图型(四&#…

【AI系统】低比特量化原理

低比特量化原理 计算机里面数值有很多种表示方式,如浮点表示的 FP32、FP16,整数表示的 INT32、INT16、INT8,量化一般是将 FP32、FP16 降低为 INT8 甚至 INT4 等低比特表示。 模型量化则是一种将浮点值映射到低比特离散值的技术,可…

【ETCD】【源码阅读】ETCD启动流程源码解读

启动流程的图如下: 1、主函数入口 ETCD 启动的入口在 etcd/server/main.go 文件中。 package mainimport ("os""go.etcd.io/etcd/server/v3/etcdmain" )func main() {etcdmain.Main(os.Args) }这里调用了 etcdmain.Main(),这是 …

计算机网络-应用层/运输层

应用层 在上一篇已经提到过, 计算机网络, 最核心的功能就是个产生信息, 发送信息.而并不关注其中的接受方究竟是人, 机器. 而协议, 就是双方约定的 可以表达一定含义的 消息内容. 符合协议的, 就能够被机器解读, 并进行下一步操作, 可能还会返回一定的响应内容. 而应用层, 有…

AD20 原理图库更新到原理图

一 点击工具,从库更新。快捷键TL 二 点击完成 三 执行变更,最后点击关闭

位运算符I^~

&运算:上下相等才是1,有一个不同就是0 |运算:只要有1返回的就是1 ^(亦或)运算:上下不同是1,相同是0 ~运算:非运算,与数据全相反 cpu核心运算原理,四种cpu底层小电路 例&#xf…

Python毕业设计选题:基于django的民族服饰数据分析系统的设计与实现_hadoop+spider

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 民族服饰管理 看板展示 系统首页 民族服饰 服饰…

mac port 安装redis 并设置为系统服务 自定义配置方法

mac系统中,port 包管理工具比brew的速度快N倍,今天就给大家分享一下在macos系统中如何使用 port安装 redis数据库并配置为服务自动启动和自定义redis.conf配置的方法。 1. 安装redis sudo port install redis 2. 启动redis服务 sudo port load redis …

MySQL导入.sql文件后数据库乱码问题

问题分析: 当导入.sql文件后,发现数据库中的备注出现乱码,通常是由于一下原因导致: 字符集不匹配:.sql文件、MySQL服务器、客户端连接使用的字符集不一致。备注内容编码问题:备注内容本身的编码格式与数据…

RabbitMQ 架构介绍:深入理解与应用

RabbitMQ 是一个开源的消息代理(Message Broker)软件,它实现了高级消息队列协议(AMQP),并提供了可靠的消息传递机制。RabbitMQ 广泛应用于分布式系统中,用于解耦系统组件、异步处理任务和实现消…

【西门子PLC.博途】——在S71200里写时间设置和读取功能块

之前我们在这篇文章中介绍过如何读取PLC的系统时间。我们来看看在西门子1200里面有什么区别。同时也欢迎关注gzh。 我们在S71200的帮助文档中搜索时间后找到这个数据类型 在博途中他是一个结构体,具体为 然后我们再看看它带的读取和写入时间块 读取时间&#xff1…

vue聊天对话语音消息播放动态特效

vue2写法&#xff0c;vue3也能用&#xff0c;粘之即走&#xff1a; 示例&#xff1a; <template><div class"voice-hidden"><divclass"voice-play-chat":class"[className, { animate-stop: !isPlaying }]"><div class&q…

Python 绘图工具详解:使用 Matplotlib、Seaborn 和 Pyecharts 绘制散点图

目录 数据可视化1.使用 matplotlib 库matplotlib 库 2 .使用 seaborn 库seaborn 库 3 .使用 pyecharts库pyecharts库 注意1. 确保安装了所有必要的库2. 检查Jupyter Notebook的版本3. 使用render()方法保存为HTML文件4. 使用IFrame在Notebook中显示HTML文件5. 检查是否有其他输…

【链表】力扣 141. 环形链表

一、题目 二、思路 龟兔进行赛跑 龟的速度是 1&#xff0c;兔的速度是 2龟兔从同一起点出发&#xff0c;若 龟追上兔 则说明 有环 存在&#xff1b;若追不上&#xff0c;则说明无环。 三、代码 /*** Definition for singly-linked list.* class ListNode {* int val;* …

Spring中使用Async进行异步功能开发实战-以大文件上传为例

目录 前言 一、场景再现 1、Event的同步机制 二、性能优化 1、异步支持配置 2、自定义处理线程池扩展 3、将线程池配置类绑定到异步方法 三、总结 前言 在之前的博客中&#xff0c;曾将讲了在SpringBoot中如何使用Event来进行大文件上传的解耦&#xff0c;原文地址&am…

PyTorch 深度学习框架简介:灵活、高效的 AI 开发工具

PyTorch 深度学习框架简介&#xff1a;灵活、高效的 AI 开发工具 PyTorch 作为一个深度学习框架&#xff0c;以其灵活性、可扩展性和高效性广受欢迎。无论是在研究领域进行创新实验&#xff0c;还是在工业界构建生产级的深度学习模型&#xff0c;PyTorch 都能提供所需的工具和…

Qt 2D绘图之五:图形视图框架的结构、坐标系统和框架间的事件处理与传播

参考文章链接: Qt 2D绘图之五:图形视图框架的结构和坐标系统 Qt 2D绘图之六:图形视图框架的事件处理与传播 图形视图框架的结构 在前面讲的基本绘图中,我们可以自己绘制各种图形,并且控制它们。但是,如果需要同时绘制很多个相同或不同的图形,并且要控制它们的移动、…