HTTP就绪状态

前面提到,服务器在完成请求之后会在XMLHttpRequest的onreadystatechange属性中查找要调用的方法。这是真的,但还不完整。事实上,每当HTTP就绪状态改变时它都会调用该方法。这意味着什么呢?首先必须理解HTTP就绪状态。
HTTP就绪状态表示请求的状态或情形。它用于确定该请求是否已经开始、是否得到了响应或者请求/响应模型是否已经完成。它还可以帮助确定读取服务器提供的响应文本或数据是否安全。在Ajax应用程序中需要了解五种就绪状态:
0:请求没有发出(在调用open()之前)。
1:请求已经建立但还没有发出(调用send()之前)。
2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
4:响应已完成,可以访问服务器响应并使用它。
与大多数跨浏览器问题一样,这些就绪状态的使用也不尽一致。您也许期望任务就绪状态从0到1、2、3再到4,但实际上很少是这种情况。一些浏览器从不报告0或1而直接从2开始,然后是3和4。其他浏览器则报告所有的状态。还有一些则多次报告就绪状态1。在上一节中看到,服务器多次调用updatePage(),每次调用都会弹出警告框——可能和预期的不同!
对于Ajax编程,需要直接处理的惟一状态就是就绪状态4,它表示服务器响应已经完成,可以安全地使用响应数据了。

HTTP状态码

有一个问题:如果服务器响应请求并完成了处理但是报告了一个错误怎么办?要知道,服务器端代码应该明白它是由Ajax、JSP、普通HTML表单或其他类型的代码调用的,但只能使用传统的Web专用方法报告信息。而在Web世界中,HTTP代码可以处理请求中可能发生的各种问题。
比方说,您肯定遇到过输入了错误的URL请求而得到404错误码的情形,它表示该页面不存在。这仅仅是HTTP请求能够收到的众多错误码中的一种(完整的状态码列表请参阅w3c站点或如下页面-http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)。表示所访问数据受到保护或者禁止访问的403和401也很常见。无论哪种情况,这些错误码都是从完成的响应得到的。换句话说,服务器履行了请求(即HTTP就绪状态是4)但是没有返回客户机预期的数据。

因此除了就绪状态外,还需要检查HTTP状态。我们期望的状态码是200,它表示一切顺利。如果就绪状态是4而且状态码是200,就可以处理服务器的数据了,而且这些数据应该就是要求的数据(而不是错误或者其他有问题的信息)。因此还要在回调方法中增加状态检查。为了增加更健壮的错误处理并尽量避免过于复杂,可以增加一两个状态码检查。

摘自:IBM文档库>掌握Ajax,第2部分:使用JavaScript和Ajax发出异步请求(http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/#resources)

HTTP就绪状态和HTTP状态码相关推荐

  1. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  2. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  3. 为什么ajax请求状态码为0,ajax请求状态码为0的解决办法

    原文链接:https://blog.csdn.net/changqing5818/article/details/53932463 前言 今天遇到个奇怪的问题,使用JQuery的ajax请求,后台的C ...

  4. 常见http状态码说明(转)

    首先要先了解下什么是HTTP状态码:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.每当客户端向Web服务器发送一个HTTP请求时,服务器都会返回 ...

  5. 常见的http状态码(Http Status Code)

    常见的http状态码:(收藏学习) 2**开头 (请求成功)表示成功处理了请求的状态代码. 200 (成功) 服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201 (已创建) 请求成 ...

  6. 记录下,我们平时开发当中不得不知道的HTTP状态码

    上面是我对博客园页面加载的时候,获取的AJAX读取资源的截图. 上述列表告诉我们了,返回的HTTP状态码,分为200(正常),304(不修改)和同时返回的资源大小和完成时间等. 这个工具可以很方便帮助 ...

  7. HTTP简介、请求方法与响应状态码

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! Https相关的文章,请看这一篇:TCP.IP协议族之数字签名与HTTPS详解 接下来想系统的回顾 ...

  8. http状态码302,303,307的区别

    2019独角兽企业重金招聘Python工程师标准>>> 他们都是重定向 并且有细微的区别,他们的区别主要来源于HTTP/1.0 和HTTP/1.1 应用程序对这些状态码处理方式不同而 ...

  9. 服务器返回的常见的http状态码

    当我们从客户端向服务器端发送请求时,服务器向我们返回状态码,状态码就是告诉我们服务器响应的状态,通过它,我们就可以知道当前请求是成功了还是出现了什么问题 状态码由3位数字和原因短语构成 其中第一位数字 ...

最新文章

  1. 线性代数:第二章 矩阵及其运算
  2. curl模拟多线程抓取网页(优化)
  3. 从配置文件的角度去了解Yii2
  4. matlab摆线等时性程序,摆的等时性实验报告.doc
  5. linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
  6. SDNU 1085.爬楼梯再加强版(矩阵快速幂)
  7. 实训说明书 在线音乐平台项目规格说明书
  8. HTML5网页APP连接MQTT,使用js连接mqtt
  9. 自考教育学计算机实践考试,中山大学自考计算机实践考试的流程是什么?
  10. c++ 各种求min/max方法效率测试
  11. 做后期必备!500组HDR贴图分享与使用方法讲解
  12. 设计模式(博客园精华集)
  13. 创业者防坑手册:面对强大的资本力量,你该如何正当防卫?
  14. python访问纯真IP数据库的代码
  15. PAT 1157 Anniversary
  16. chrome浏览器插件SwitchyOmega的安装(离线安装)
  17. word中怎样设置行距行高
  18. 梅特卡夫定律vs齐普夫定律vs邓巴“150定律”
  19. web前端——浏览器兼容问题
  20. cc ,gcc 命令解释

热门文章

  1. 「WAYZ维智」:全国最具价值的室内外混合定位感知网络 | 百万人学AI评选
  2. 《数据库概论》实验(6):交互式SQL--视图与授权
  3. PPT处理福音!Aspose.Slides最新版实现自主的跨平台3D引擎
  4. C语言飞机大战程序思路,C语言代码实现飞机大战
  5. 关闭所有杀毒软件快捷方法
  6. java 最短遍历路径_凯文培根游戏的最短路径图遍历
  7. 【一起入门NLP】中科院自然语言处理作业四:RNN+Attention实现Seq2Seq中英文机器翻译(Pytorch)【代码+报告】
  8. Allegro PCB Design GXL (legacy) 设置自动保存brd文件
  9. 腾讯云Ubuntu建FTP心得
  10. 网络工程设计教程系统集成方法第3版-第1章 网络工程设计概述