[交互]AJAX

[交互]AJAX

  • 创建 XMLHttpRequest
  • 发送请求
  • 服务器响应
    • XMLHttpRequest readyState 状态值
    • 响应数据
    • 请求状态变更回调函数
    • XMLHttpRequest status 的值
    • 常用状态码设置

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"
};

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

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

相关文章

【C++深入浅出】日期类的实现

目录 一. 前言 二. 日期类的框架 三. 日期类的实现 3.1 构造函数 3.2 析构函数 3.3 赋值运算符重载 3.4 关系运算符重载 3.5 日期 /- 天数 3.6 自增与自减运算符重载 3.7 日期 - 日期 四. 完整代码 一. 前言 通过前面两期类和对象的学习,我们已经对C的…

Mysql的定时备份与恢复

MySQL定时备份与还原 MySQL备份方案 物理备份 这种备份方式将数据库的实际文件复制到另一个位置。常见的物理备份工具包括mysqldump和Percona XtraBackup。具体操作如下: 使用mysqldump 命令备份数据库: mysqldump -u username -p database_name >…

【微信小程序】项目初始化

| var() CSS 函数可以插入一个自定义属性(有时也被称为“CSS 变量”)的值,用来代替非自定义 属性中值的任何部分。 1.初始化样式与颜色 view,text{box-sizing: border-box; } page{--themColor:#ad905c;--globalColor:#18191b;--focusColor…

RHCSA 重定向、vim练习题

1.重定向练习题 (1)新建一个文件redirect.txt,并在其中写入20210804RHCSA,保存并退出 先输入命令 [rootlocalhost ~]# vim redirect.txt进入vim编辑器后,按快捷键“i”进入编辑模式,再写入数据,写完之后按“esc"键退出编辑…

多款大模型向公众开放,百模大战再升级?

作为一种使用大量文本数据训练的深度学习模型,大模型可以生成自然语言文本或理解语言文本的含义,是通向人工智能的一条重要途径。大模型可以应用于各种机器学习任务,包括自然语言处理、计算机视觉、语音识别、机器翻译、推荐系统、强化学习等…

vue项目通过json-bigint在前端处理java雪花id过长导致失去精度问题

这里 我简单模仿了一个接口 这里 我单纯 返回一个long类型的雪花id 然后 前端 用 axios 去请求 大家知道 axios 会对请求数据做一次处理 而我们 data才是拿到我们java这边实际返回的东西 简单说 就是输出一下我们后端返回 的内容 这里 我们网络中显示的是 35866101868095488…

Mysql树形表的两种查询方案(递归与自连接)

你有没有遇到过这样一种情况: 一张表就实现了一对多的关系,并且表中每一行数据都存在“爷爷-父亲-儿子-…”的联系,这也就是所谓的树形结构 对于这样的表很显然想要通过查询来实现价值绝对是不能只靠select * from table 来实现的&#xff0…

Ubuntu 22.04安装过程

iso下载地址 Ubuntu Releases 1.进入引导菜单 选择Try or Install Ubuntu Server安装 2.选择安装语言 默认选择English 3.选择键盘布局 默认即可 4.选择安装服务器版本 最小化安装 5.配置网络 选择ipv4 选择自定义 DHCP也可 6.配置代理 有需要可以配置 这里跳过 7.软件源 …

Windows配置python(anaconda+vscode方案)的主要步骤及注意事项

Windows配置python(anacondavscode方案)的主要步骤及注意事项 1、准备工作 anaconda,官网下载(直接下载最新版)vscode,官网下载 (官网直接下载有可能太慢,可以考虑在国内靠谱的网站上下载&…

第7节-PhotoShop基础课程-视图调整

文章目录 前言1.视图菜单1. 视图操作1.校样颜色 Ctrl Y2.色域警告 Ctrl Shift Y3.像素长宽比 2.显示操作1.大小调整1.Alt 滚轮2.放大选项3.按空格 出现抓手 2.按屏幕大小缩放 Ctrl 0(数字0)3.按实际大小缩放 Ctrl 11.标准屏幕模式2.带有菜单栏的全屏模式3.全屏模式4.只显…

《PostgreSQL事务管理深入解析》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

idea中dataBase模板生成

controller.java.vm ##定义初始变量 #set($tableName $tool.append($tableInfo.name, "Controller")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/contro…

HTML

HTML 1.HTML结构 1.1认识HTML HTML是超文本标记语言&#xff0c;电脑上看到的所有网站都是html实现的 HTML代码是“标签”构成的&#xff0c;简单来说&#xff0c;html就是一堆标签的组合 形如 <body>hello</body>标签名 (body) 放到 < > 中 大部分标签成…

Linux安全加固:保护你的服务器

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

什么是Jmeter?Jmeter使用的原理步骤是什么?

1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于 Web 应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Java 小服务程序、CGI 脚…

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出 目录 多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出&#xf…

Rust源码分析——Rc 和 Weak 源码详解

Rc 和 Weak 源码详解 一个值需要被多个所有者拥有 rust中所有权机制在图这种数据结构中&#xff0c;一个节点可能被多个其它节点所指向。那么如何表示图这种数据结构&#xff1f;在多线程中&#xff0c;多个线程可能会持有同一个数据&#xff1f;如何解决这个问题。 Rc rus…

GIS跟踪监管系统信息查询

GIS跟踪监管系统信息查询 GIS跟踪监管系统&#xff08;1&#xff09;物资查询与展示。① 几何查询。代码说明&#xff1a;② 物资定位。• 单个物资定位&#xff1a;• 多个物资定位&#xff1a;③ 物资统计。&#xff08;2&#xff09;物资信息更新① 新增物资。 GIS跟踪监管系…

【Tensorflow 2.12 电影推荐项目搭建】

Tensorflow 2.12 电影推荐项目搭建 学习笔记工具、环境创建项目项目配置安装相关python包召回模型实现排序模型实现实现电影推荐导入模块设置要推荐的用户召回推荐排序推荐推荐结果结尾学习笔记 Tensorflow 2.12 电影推荐项目搭建记录~ Tensorflow是谷歌开源的机器学习框架,可…

Kotlin File useLines nameWithoutExtension extension

Kotlin File useLines nameWithoutExtension extension import java.io.Filefun main(args: Array<String>) {val filePath "myfile.txt"val file File(filePath)println(file.name) //文件名字&#xff0c;不包括路径println(file.isFile) //是文件吗pri…