zoukankan      html  css  js  c++  java
  • XMLHttpRequest.readyState(Http就绪状态) | XMLHttpRequest.status(Http状态码) 详情

    function updatePage() {
    if (request.readyState == 4)
    alert("Server is done!");
    }

    ● 0:请求没有发出(在调用 open() 之前)。
    ● 1:请求已经建立但还没有发出(调用 send() 之前)。
    ● 2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
    ● 3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
    ● 4:响应已完成,可以访问服务器响应并使用它。

    大多数跨浏览器问题一样,这些就绪状态的使用也不尽一致。您也许期望任务就绪状态从 0 到 1、2、3再到 4,但实际上很少是这种情况。一些浏览器从不报告 0 或 1 而直接从 2 开始,然后是 3 和 4。其他浏览器则报告所有的状态。还有一些则多次报告就绪状态 1。在上一节中看到,服务器多次调用 updatePage(),每次调用都会弹出警告框 —— 可能和预期的不同!对于 Ajax 编程,需要直接处理的惟一状态就是就绪状态 4,它表示服务器响应已经完成,可以安全地使用响应数据了。

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

    function updatePage() {
    if (request.readyState == 4)
    if (request.status == 200)
    alert("Server is done!");
    }

    //为了增加更健壮的错误处理并尽量避免过于复杂,可以增加一两个状态码检查
    function updatePage() {
    if (request.readyState == 4)
    if (request.status == 200)
    alert("Server is done!");
    else if (request.status == 404)
    alert("Request URL does not exist");
    else
    alert("Error: status code is " + request.status);
    }

     服务器给出了正常的响应(通过状态码),最后我们可以处理服务器返回的数据了。返回的数据保存在 XMLHttpRequest 对象的 responseText 属性中。

  • 相关阅读:
    poj 3348 Cows
    HDOJ4467 ( 分块 思想 )
    HDOJ 4858 项目管理 ( 只是有点 莫队的分块思想在里面而已啦 )
    luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )
    CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT
    load d3dcompiler_46.dll failed
    HDAO one error
    PS4 Razor GPU
    BLUR
    疑难杂症rendering(对角线上的线)
  • 原文地址:https://www.cnblogs.com/buyinji/p/2301324.html
Copyright © 2011-2022 走看看