.netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码
参考资料:AJAX 状态值(readyState)与状态码(status)详解
一、AJAX实际运行中的几种状态值
AJAX实际运行当中,对于访问XMLHttpRequest(XHR)时并不是一次完成的,而是分别经历了多种状态后取得的结果,对于这种状态在AJAX中共有5种,分别是:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
对于上面的状态,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”进行判断。
二、readyState VS status 区别
1、readyState & status & load
- readyState:客户端与客户交互状态过程
- status:服务器对请求的反馈,数据是否正常
- load: 4(readyState === 4)为一种完成状态(响应内容解析完成状态),触发调用load事件
2、AJAX状态值(readyState)与状态码(status)区别
(1)AJAX状态值,运行AJAX所经历过的几种状态,无论访问是否成功都将响应的步骤,可以理解成为AJAX运行步骤。如:正在发送——正在响应等,由AJAX对象与服务器交互时所得;使用“ajax.readyState”获得,由数字1~4单位数字组成。
(2)AJAX状态码,无论AJAX访问是否成功,由HTTP协议根据所提交的信息,服务器所返回的HTTP头信息代码,该信息使用“ajax.status”所获得,由数字1XX,2XX三位数字组成。
这就是我们在使用AJAX时为什么采用下面的方式判断所获得的信息是否正确的原因。
if(ajax.readyState == 4 && ajax.status == 200) { putData(ajax.responseText);
}
3、 AJAX运行步骤与状态值说明
(1)AJAX运行步骤:
在AJAX实际运行当中,对于访问XMLHttpRequest(XHR)时并不是一次完成的,而是分别经历了多种状态后取得的结果,对于这种状态在AJAX中共有5种,分别是:
- 0 - (未初始化)还没有调用send()方法
- 1 - (载入)已调用send()方法,正在发送请求
- 2 - (载入完成)send()方法执行完成,
- 3 - (交互)正在解析响应内容
- 4 - (完成)响应内容解析完成,可以在客户端调用了
对于上面的状态,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”进行判断。
(2) AJAX状态值说明
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版本
(3) AJAX运行步骤示义图
3、继续探究一下所请求的后端数据文件
在xhr.open()中要求请求服务器,即请求一个资源,而 url 则是定位一个资源
将所请求的服务器定位成请求一些资源,如'/hello.json'。假如模拟后端的数据,比如请求一个登陆数据:'/login',请求时带有一些参数,如将用户所输入的数据拼装成类似url形式:
'/login?username=wangxiaoqin&password=12345'作为资源请求
4、通过post形式去请求数据
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head><body><script> var xhr = new XMLHttpRequest()xhr.open('POST','/1.json',true)xhr.send('username=wangxiaoqin&password=12345')//直接发送数据xhr.addEventListener('load',function(){console.log(xhr.status)if((xhr.status >= 200 && xhr.status <300) ||xhr.status ===304){var data = xhr.responseTextconsole.log(data)}else{console.log('error')} })</script></body>
</html>
'username=wangxiaoqin&password=12345' 这段拼接的过程可以通过写一个函数展现:
//传递一个参数:
makeUrl({username:'wangxiaoqin',password:12345
})
//拼接一个url,通过遍历这个对象,进行拼接
function makeUrl(obj){var arr = []for(var key in obj){arr.push(key + '=' + obj[key])}return arr.join('&')}
那么,xhr.send()便直接可以发送这个对象
xhr.send(makeUrl({username:'wangxiaoqin',password:12345
}))
.netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码相关推荐
- java 判断请求为 ajax请求_请问如何判断一个请求是不是ajax请求?
针对跨域情况的getjson 或者ajax(jsonp)可以使用ACCEPT请求头部格式来判断 PHP端对应$_SERVER['HTTP_ACCEPT'] jsonp的请求一般是:text/javas ...
- java判断ajax请求_判断Httprequest 是否ajax 请求的方法
在写后台程序时,有时候需要知道客户端发送的是普通的请求,还是ajax 请求,至少在我目前所做的项目中有这样一个用途:如果session 过期的时候,如果是普通请求,跳转到登录页面,但如果是ajax 请 ...
- ajax put请求_前端基础面试:手写一个ajax,说说XMLHttpRequest 都有哪些属性?
前言 在 Ajax 出现之前,网页想要和服务器通信,最常用的方式是使用 form 表单:用户提交表单后,浏览器就开始跳转,服务器接收表单并处理,然后将新的网页返回给浏览器:整个过程用户都只有等待,用户 ...
- addeventlistener监听ajax请求_基于h5的history改善ajax列表请求体验
信息比较丰富的网站通常会以分页显示,在点"下一页"时,很多网站都采用了动态请求的方式,避免页面刷新.虽然大家都是ajax,但是从一些小的细节还是 可以区分优劣.一个小的细节是能否支 ...
- ajax 请求_前端后分离Ajax跨域请求保证Session一致
JAVA码牛牛,程序员学习指南 前后端分离的项目,使用Ajax请求一般都出现跨域的问题. 跨域的时候所创建的session是不会被浏览器保存下来的.所以每次进行跨域请求时,服务器都认为不是同一个浏览器 ...
- ajax请求_重复的ajax请求让人很受伤
重复的ajax请求让人很受伤 重复的ajax请求一波又一波的袭来,服务器正躲在角落里瑟瑟发抖,它内心是崩溃的,这算是遭了罪了, 前端小王子为啥没有做好限制和封锁,真是伤不起啊,哎,不如意事常八九,能与 ...
- python模拟ajax请求_短信炸弹—用Python模拟ajax请求
我们经常使用各种脚本发送网络请求,提交各种形式的body数据,所以Content-Type的类型也有很多种. 常见的取值有: application/xml : 在 XML RPC,如 RESTful ...
- ajax 请求_你了解前端出现Ajax跨域请求的原因吗?
ajax的跨域真正面目 作为一名前端开发人员,谈到Ajax几乎是无人不知无人不晓,每天都会跟Ajax打打交道,特别在如今提倡前后端分离的时代,更是相处甚多,使用过程中碰到最多的一个问题相信应该是请求跨 ...
- axios创建实例对象发送ajax请求_解决一个网页请求多个服务器场景---axios工作笔记009
然后我们再去看看,我们利用 axios去创建实例对象来发送ajax请求 可以看到上面我们创建了一个duanzi的axios对象. 然后我们在这个duanzi的axios对象中,指定默认的baseURL ...
最新文章
- 敏捷开发 | 张三与需求管理
- [转] MySQL和MongoDB设计实例对比
- Java 链接MySQL数据库时报的connect和denied错解决方法
- 磁盘阵列RAID的分类有哪些?
- 如何在多台web服务器上共享session?
- spring 上下文_一次性教你彻底理解 Spring容器和应用上下文!
- java 中 正则 正则表达式 匹配 url
- JAVA解决实例问题_解决java方法
- python编写dll_python调用c/c++写的dll
- HALCON 21.11:深度学习笔记---设置超参数(5)
- python2.7.12源码编译
- 鸿蒙2.0手机交互体验,鸿蒙 2.0手机应用开发者Beta,来了!全新交互体验
- 关于vs编译器的一些认识
- 大使馆大师傅活动分工和非都市规划
- 开发步骤_社交app开发步骤,送给不懂app开发的你
- 前端优化之二 图片优化——质量与性能的博弈
- Processing入门简介
- 微信小程序 - 公农历通用时间选择器组件
- 计算机类工程硕士研究生实践报告,工程硕士实践的总结报告.docx
- 【软件测试】如何测试人工智能软件?
热门文章
- 并行程序调试、测试与模型检测
- 【转】XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证 ....
- LocBaml for .net 4.0
- 2018怎么打开2019_2019年养老金涨幅5%,这几个方面有调整,你到手的钱增加没
- Python爬虫实战源码合集(持续更新)
- npm i 命令长时间卡住的解决办法
- Ubuntu18.04之国内常用源
- GStreamer入门概念(二)
- Linux container_of用法
- Android HWUI硬件加速模块浅析