[交互]AJAX

2023-09-15 22:53:41

AJAX 是技术,不是工具,区别于 axios、fetch、$.ajax 等(封装工具)现有交互工具,是用于改变部分网页的技术

HTTP 超文本传输协议,所以 AJAX 也不是 HTTP , AJAX 是实现 HTTP 的一种技术

数据交互的根本是现代浏览器都支持 XMLHttpRequest 对象!!!!

AJAX:Asynchronous JavaScript and XML

创建 XMLHttpRequest

let xmlhttp = null;
if (window.XMLHttpRequest) {
  //  IE7+, Firefox, Chrome等现代浏览器执行代码
  xmlhttp = new XMLHttpRequest();
} else {
  // IE6, IE5 浏览器执行代码
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

发送请求

xmlhttp.open(method, url, async);
xmlhttp.setRequestHeader(header, headerValue); //设置请求头
xmlhttp.send(postStr); //发送请求到服务器
  • method: 方法类型
  • url: 服务器请求文件地址
  • async: 同步 false 或异步 true
  • postStr: post 方法提交的数据

服务器响应

XMLHttpRequest readyState 状态值

xmlhttp.readyState 的值

取值说明
0请求未初始化(未调用 open))
1请求已经建立,但是未发送( 未调用 send())
2请求已发送,正在处理中(通常现在可以从响应中获取内容头)
3请求处理中;响应中部分数据可用,但服务器还未完成响应的生成
4响应已完成;可以获取并使用服务器的响应了

xmlhttp.readyState 的值每次发生改变都会调用 xmlhttp.onreadystatechange

响应数据

xmlhttp.responseTxt; //响应为字符串
xmlhttp.responseXML; //响应为XML对象

请求状态变更回调函数

xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
  }
};

XMLHttpRequest status 的值

xmlhttp.status 的值及解释:

取值说明
100客户继续发出请求
101客户要求服务器根据请求转换 HTTP 协议版本
200交易成功
201提示知道新文件的 URL
202接受和处理,但处理未完成
203返回信息不确定或不完整
204请求收到,但返回信息为空
205服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206服务器已经完成了部分用户的 GET 请求
300请求的资源可在多处得到
301删除请求数据
302在其他地址发现了请求数据
303建议客户访问其他 URL 或访问方式
304客户端已经执行 GET,但文件未变化
305请求的资源必须从服务器指定的地址得到
306前一版本 HTTP 代码,现行版本不再使用
307申明请求的资源临时性删除
400错误请求,如语法错误
401请求授权失败
402保留有效 ChargeTo 头响应
403请求不允许
404没有发现文件、查询或 URl
405用户在 Request-Line 字段定义的方法不允许
406根据用户发送的 Accept 拖,请求资源不可访问
407类似 401,用户必须首先在代理服务器上得到授权
408客户端没有在用户指定的时间内完成请求
409对当前资源状态,请求不能完成
410服务器上不再有此资源且无进一步的参考地址
411服务器拒绝用户定义的 Content-Length 属性请求
412一个或多个请求头字段在当前请求中错误
413请求的资源大于服务器允许的大小
414请求的资源 URL 长于服务器允许的长度
415请求资源不支持请求项目格式
416请求中包含 Range 请求头字段,在当前请求资源范围内没有 range 指示值,请求也不包含 If-Range 请求头字段
417服务器不满足请求 Expect 头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500服务器产生内部错误
501服务器不支持请求的函数
502服务器暂时不可用,有时是为了防止发生系统过载
503服务器过载或暂停维修
504关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505服务器不支持或拒绝请求头中指定的 HTTP 版本
总结对以上的状态的归总说明
1xx信息响应类,表示接收到请求并且继续处理
2xx处理成功响应类,表示动作被成功接收、理解和接受
3xx重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx客户端错误,客户请求包含语法错误或者是不能正确执行
5xx服务端错误,服务器不能正确执行一个正确的请求

xmlhttp.readyState4 && xmlhttp.status200 的解释:请求完成并且成功返回

常用状态码设置

const HTTP_STATUS_CODES = {
  100: "Continue",
  101: "Switching Protocols",
  200: "OK",
  201: "Created",
  202: "Accepted",
  203: "Non-Authoritative Information",
  204: "No Content",
  205: "Reset Content",
  206: "Partial Content",
  300: "Multiple Choice",
  301: "Moved Permanently",
  302: "Found",
  303: "See Other",
  304: "Not Modified",
  305: "Use Proxy",
  307: "Temporary Redirect",
  400: "Bad Request",
  401: "Unauthorized",
  402: "Payment Required",
  403: "Forbidden",
  404: "Not Found",
  405: "Method Not Allowed",
  406: "Not Acceptable",
  407: "Proxy Authentication Required",
  408: "Request Timeout",
  409: "Conflict",
  410: "Gone",
  411: "Length Required",
  412: "Precondition Failed",
  413: "Request Entity Too Large",
  414: "Request-URI Too Long",
  415: "Unsupported Media Type",
  416: "Requested Range Not Satisfiable",
  417: "Expectation Failed",
  422: "Unprocessable Entity",
  500: "Internal Server Error",
  501: "Not Implemented",
  502: "Bad Gateway",
  503: "Service Unavailable",
  504: "Gateway Timeout",
  505: "HTTP Version Not Supported"
};
更多推荐

iOS16新特性:实时活动-在锁屏界面实时更新APP消息 | 京东云技术团队

简介之前在《iOS16新特性:灵动岛适配开发与到家业务场景结合的探索实践》里介绍了iOS16新的特性:实时更新(LiveActivity)中灵动岛的适配流程,但其实除了灵动岛的展示样式,LiveActivity还有一种非常实用的应用场景,那就是锁屏界面实时状态更新:上图是部分已经做出适配的APP,锁屏实时活动的展示。可

RabbitMQ常见问题

一、RabbitMQ如何保证消息不丢失?这是面试时最喜欢问的问题,其实这是个所有MQ的一个共性的问题,大致的解决思路也是差不多的,但是针对不同的MQ产品会有不同的解决方案。而RabbitMQ设计之处就是针对企业内部系统之间进行调用设计的,所以他的消息可靠性是比较高的。1、哪些环节会有丢消息的可能?我们考虑一个通用的MQ

微服务 第二章 CountDownLatch和Semaphone的应用

系列文章目录第二章CountDownLatch和Semaphone的应用第一章Java线程池技术应用文章目录系列文章目录前言1、CountDownLatch1.1、应用场景2、Semaphone前言JavaJUI之并发编程,CountDownLatch和Semaphone的应用1、CountDownLatchCount

【机器学习】TF-IDF以及TfidfVectorizer

TF-IDF定义TF-IDF:全称为"词频一逆文档频率"。TF:某一给定词语在该文档中出现的频率。TFw=词语w在该文档中个数该文档内总词个数TF_w=\frac{词语w在该文档中个数}{该文档内总词个数}TFw​=该文档内总词个数词语w在该文档中个数​。IDF:整个训练集文档集合一共由NNN篇文档组成,其中包含某个给

一文了解云计算

目录🍎云服务🍎云计算类型🍒公有云🍒私有云🍒混合云🍎云计算服务模式🍒IaaS基础设施即服务🍒PaaS平台即服务🍒SaaS软件即服务🍒三者之间区别🦐博客主页:大虾好吃吗的博客🦐专栏地址:闲谈专栏地址云服务云计算是通过互联网提供一个计算服务,其中包括服务器、数据库、存储以及各种应用服务,采用按需付费的

SpringBoot+MyBatisPlus+MySQL不能储存(保存)emoji表情问题解决

1.之前在学习过程中不知道utf8和utf8mb4的区别,也没过多去了解,直到最近设置的数据库编码全是utf8后发现问题所在了,居然不能储存表情包!!!整个人直接傻了,后面知道了utf8是3字节不能储存表情,utf8mb4才可以,废话不多说马上整改,接下来的一幕就令人头疼了。2.我的mysql版本是5.7.40,首先按

Jenkins :添加node权限获取凭据、执行命令

拥有Jenkinsagent权限的账号可以对node节点进行操作,通过添加不同的node可以让流水线项目在不同的节点上运行,安装Jenkins的主机默认作为master节点。1.Jenkins添加node获取明文凭据通过添加node节点,本地监听ssh认证,选则凭据(明文)进行ssh认证,拿到密码。1.新建节点-man

iOS应用上线需要注意的问题

将iOS应用上线到AppStore需要仔细注意一系列问题,以确保应用的质量、安全性和用户体验。以下是一些在iOS应用上线过程中需要注意的关键问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.开发者账号:确保你拥有有效的苹果开发者账号,可以在苹果开发者中心进行注册和管理。2.应

HTML5数据推送SSE原理及应用开发

JavaScript表达行为,CSS表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数据推送技术的产生。SSE是一种允许服务器端向客户端推送新数据(简称数据推送)的HTML5技术。数据推送有两种替代方案:无

全国“十城千企”中小企业数字化服务行(厦门站),攸信技术为中小企业来访团“把脉问诊”!

近日,由厦门市工业和信息化局、市国资委联合主办的2023年全国“百场万企”大中小企业融通对接活动暨全国“十城千企”中小企业数字化服务行(厦门站)在厦顺利召开。众多行业知名企业会聚,聚焦中小企业智能化改造和数字化转型升级。本次活动,主办方组织与会中小企业,组团走进数字化标杆单位观摩交流“取真经”,攸信技术作为数字化转型标

第十四届蓝桥杯省赛 C/C++ A 组 H 题——异或和之和(AC)

目录1.异或和之和1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.AC_Code1.异或和之和1.题目描述给定一个数组AiA_iAi​,分别求其每个子段的异或和,并求出它们的和。或者说,对于每组满足1≤L≤R≤n1\leqL\leqR\leqn1≤L≤R≤n的L,RL

热文推荐