web交互方式---ajax
知识不怕旧,关键在于在旧知识的基础上不断创新与提高!
引入一个问题:打开一个浏览器,在地址栏输入一个网址,按下 enter 键到看到整个页面,中间都经历了哪些事情?
这是一个前端的面试题,相信很多朋友都知道,知道了解的朋友可以略过这一块。
1、HTTP请求阶段:向服务器发送请求
浏览器首先向DNS域名解析服务器发送请求,DNS域名解析服务器对该地址进行解析,根据浏览器请求地址中的域名,到DNS服务器中找到对应的服务器外网IP地址,进而通过找到的外网IP,向对应的服务器发送请求,通过URL地址中携带的端口号,找到服务器上对应的服务,以及服务所管理的项目源文件;
2、HTTP响应阶段:服务器把客户端需要的内容准备好,并且返回给客户端
服务器端根据请求地址中的路径名称、问号传参或者哈希值,把客户端需要的内容进行准备和处理,把准备的内容响应给客户端;
注意:如果请求的是HTML或者CSS等这样的资源文件,服务器返回的是资源文件中的源代码
3、浏览器渲染阶段
客户端浏览器接受到服务器返回的源代码,基于自己内部的渲染引擎(内核)开始进行页面的绘制和渲染。

URL,在上诉中一个很重要的媒介:https://i.cnblogs.com/helloworld.html?name=xxx&sex=xxx#boy,我们再来认识认识这个东西是什么?
1、URL / URN / URI
URI = URL + URN
URI:统一资源标识符
URL:统一资源定位符
URN:统一资源名称
2、传输协议(http):用来传输客户端和服务器端交互的信息(这是个很重要的东西)
HTTP:超文本传输协议(除了传递普通的文本,还可以传递文件流或者进制编码等信息),是目前最常用的WEB传输协议
HTTPS:基于SSL(Secure Sockets Layer 安全套接层)加密的HTTP传输协议,比HTTP更加的安全
扩展:FTP:文件传输协议,一般用来实现资源文件在服务器上的上传下载
3、域名:i.cnblogs.com
这个没什么好说的,基本就是为了语义化,好记
4、端口号(8080):用来区分同一台服务器上不同服务的标识
HTTP => 默认端口号 80
HTTPS => 默认端口号 443
FTP => 默认端口号 21
端口号范围:0~65535之间
5、请求路径名称:/helloworld.html
(1)有后缀信息:/helloworld.html
一般都是请求当前服务对应的项目目录中,helloworld.html页面
(2)无后缀信息:/helloworld
一般都不是用来请求资源文件的,而是用于AJAX数据请求的接口地址
6、问号传参及哈希值:?name=xxx&sex=xxx#boy
在HTTP事务中,问号传参是客户端把信息传递给服务器的一种方式(也有可能是跳转到某一个页面,把参数值传递给页面用来标识的)
哈希值一般都跟客户端服务器交互没啥关系,主要用于页面中的锚点定位和HASH路由切换
看了这么多是不是觉得啰嗦了呢,别急,正题这不就来了吗!
AJAX :async javascript and xml 异步的 JS 和 XML
1、操作
// 创建AJAX实例:IE6中是不兼容的(忽略这万恶的)
let xhr = new XMLHttpRequest(); // 打开请求:发送请求之前的一些配置项
// 1.HTTP METHOD 请求方式
// GET/DELETE/HEAD/OPTIONS/TRACE/CONNECT/POST/PUT
// 2.URL 向服务器端发送请求的API
// 3.ASYNC 设置AJAX请求的同步异步,默认是异步(写TRUE也是异步),FALSE是同步,一般都使用异步编程,防止阻塞后续代码执行
// 4.USER-NAME/USER-PASS:用户名密码,一般不用
xhr.open([HTTP METHOD],[URL],[ASYNC],[USER-NAME],[USER-PASS]); // 事件监听:一般监听的都是 READY-STATE-CHANGE 事件(AJAX状态改变事件),基于这个事件可以获取服务器返回的响应头响应主体内容
xhr.onreadystatechange=()=>{
if(xhr.readyState===4 && xhr.status===200){
xhr.responseText;
}
}; // 发送AJAX请求:从这步开始,当前AJAX任务开始,如果AJAX是同步的,后续代码不会执行,要等到AJAX状态成功后在执行,反之异步不会
xhr.send([请求主体内容]);
2、HTTP请求方式
所有的请求都可以给服务器端传递内容,也都可以从服务器端获取内容
GET:从服务器端获取数据(给少拿多)
POST:向服务器端推送数据(给多拿少)
DELETE:删除服务器端的某些内容(一般是删除一些文件)
PUT:向服务器上存放一些内容(一般也是存放文件)
HEAD:只想获取服务器返回的响应头信息,不要响应主体中的内容
OPTIONS:一般使用它向服务器发送一个探测性请求,如果服务器端返回的信息了,说明当前 > 客户端和服务器端建立了连接,我们可以继续执行其它请求了
3、GET VS POST(重点嘛)
(1)传递给服务器信息的方式不一样
// GET是基于URL地址“问号传参”的方式把信息传递给服务器
xhr.open('GET','/haha/list?xxx=xxx&xxx=xxx') // POST是基于“请求主体”把信息传递给服务器
xhr.send('xxx=xxx&xxx=xxx')
(2)GET不安全,POST相对安全
(3)GET会产生不可控制的缓存,POST不会
4、AJAX状态
- 0 :刚开始创建XHR,还没有发送
- 1 :已经执行了OPEN这个操作
- 2 :已经发送AJAX请求(AJAX任务开始),响应头信息已经被客户端接收了(响应头中包含了:服务器的时间、返回的HTTP状态码...)
- 3 :响应主体内容正在返回
- 4 :响应主体内容已经被客户端接收
5、HTTP网络状态码
根据状态码能够清楚的反映出当前交互的结果及原因
- 200 OK 成功(只能证明服务器成功返回信息了,但是信息不一定是你业务需要的)
- 301 Moved Permanently 永久转移(永久重定向)
- 302 Move temporarily 临时转移(临时重定向 =>307)
- 304 Not Modified 设置缓存
- 400 Bad Request 请求参数错误
- 401 Unauthorized 无权限访问
- 404 Not Found 找不到资源(地址不存在)
- 413 Request Entity Too Large 和服务器交互的内容资源超过服务器最大限制
- 500 Internal Server Error 未知的服务器错误
- 503 Service Unavailable 服务器超负荷
6、XHR的属性和方法
- xhr.response 响应主体内容
- xhr.responseText 响应主体的内容是字符串(JSON或者XML格式字符串都可以)
- xhr.responseXML 响应主体的内容是XML文档
- xhr.status 返回的HTTP状态码
- xhr.statusText 状态码的描述
- xhr.timeout 设置请求超时的时间
- xhr.withCredentials 是否允许跨域(FALSE)
- xhr.abort() 强制中断AJAX请求
- xhr.getAllResponseHeaders() 获取所有响应头信息
- xhr.getResponseHeader([key]) 获取KEY对应的响应头信息
- xhr.open() 打开URL请求
- xhr.overrideMimeType() 重写MIME类型
- xhr.send() 发送AJAX请求
- xhr.setRequestHeader() 设置请求头
后面就是让我们动动自己的小手,实现你自己代码吧!
web交互方式---ajax的更多相关文章
- Web的Ajax应用开发模式(三)——Ajax的开发
Ajax是XMLHttpRequest对象和JavaScript.CSS.HTML.DOM等多种技术的结合. 此处重点强调XMLHttpRequest的以下特点,所以测试人员在测试到WEB的Ajax应 ...
- Web的Ajax应用开发模式(二)——Ajax开发模式分析
寄语: 前天在查看一些公司的招聘要求时,看到有公司要求测试人员了解Ajax,故写此博文旨在帮助测试人员提高自身技术知识水平,愿与广大测试同胞共同进步.(欢迎纠错!!!) Web应用的传统开发模式总结: ...
- Web前端-Ajax基础技术(下)
Web前端-Ajax基础技术(下) 你要明白ajax是什么,怎么使用? ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问. 浏览器发送请求,获取服务器的数据: 地址栏 ...
- Web前端-Ajax基础技术(上)
Web前端-Ajax基础技术(上) ajax是浏览器提供一套的api,用于向服务器发出请求,接受服务端返回的响应,通过javascript调用,实现通过代码控制请求与响应,实现网络编程. ajax发送 ...
- web项目ajax技术一些总结
WEB项目中,最主要的就是前后端间的联络.有时需要不进行页面跳转的前提下请求后端方法(action),就需要用到ajax. 在这个博客中,我用到的都是原生的js的ajax,不是很喜欢用jquery的a ...
- Web:AJAX的详解
Web中的AJAX技术: 1.介绍:全称:Asnchronous JavaScript and XML,即异步的JavaScript和XML功能:它不是某种编程语言,是一种无需加载整个网页的情况下能够 ...
- web交互方式
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 优点:后端程序编写比较容易. 缺点:请求中有大半是无用,浪费带宽和服务器资源. 实例:适于小型应用. 长轮询:客 ...
- java web 之 AJAX用法
AJAX :Asynchronous JavaScript And XML 指异步 JavaScript 及 XML一种日渐流行的Web编程方式 Better Faster User-Friendly ...
- C# web Api ajax发送json对象到action中
直接上代码: 1.Product实体
随机推荐
- HDU 3360 National Treasures 奇偶匹配的最低点覆盖
标题来源:pid=3360">HDU 3360 National Treasures 意甲冠军:假设a[i][j] != -1 把他转成二进制 最多有12位 代表题目那张图的12个位置 ...
- window对象的方法
window.alert('大家好!');//弹出警告对话框 window.confirm('确定要删除吗?');//确定.取消对话框,返回true或false; window.navigate(ur ...
- 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?
原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WP ...
- Delphi7下安装TMS component控件
1.启动delphi7.2.File-->Open Project ...打开TMS component 源目录下的“tmsd7.bpg”. 3.在打开的窗口列表中,依次在各选项上点击鼠标右键, ...
- 利用Python sklearn的SVM对AT&T人脸数据进行人脸识别
要求:使用10-fold交叉验证方法实现SVM的对人脸库识别,列出不同核函数参数对识别结果的影响,要求画对比曲线. 使用Python完成,主要参考文献[4],其中遇到不懂的功能函数一个一个的查官方文档 ...
- python chrome selenium
#coding=utf-8 from selenium import webdriver options = webdriver.ChromeOptions() options.add_argumen ...
- WPF常用第三方控件
NLog日志控件: Install-Package NLog.Config Mysql数据库控件: Install-Package Mysql.Data 最新版本只支持.net 4.5.2及以上版本, ...
- vista忘记用户名密码的修改方法(使用PE进入系统,用cmd.exe冒充虚拟键盘,然后就可以mmc组策略,或者命令行添加用户并提升权限)
1. 准备Windows Vista安装光盘,进入BIOS将光驱设为第一启动,在出现的安装界面依次单击"修复计算机","命令提示符". 2.输入以下命令: co ...
- How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)
Let’s say you’re building some sort of ingenious mechanical contraption to be displayed in public th ...
- Bigtable:结构化数据的分布式存储系统
Bigtable最初是谷歌设计用来存储大规模结构化数据的分布式系统,其可以在数以千计的商用服务器上存储高达PB级别的数据量.开源社区根据Bigtable的设计思路开发了HBase.其优势在于提供了高效 ...