zoukankan      html  css  js  c++  java
  • ajax里的status和readystate

    先看ajax封装函数

     1   function ajaxFunc(method,url,data,callback) {
     2             var xhr;
     3             if (XMLHttpRequest) {
     4                 xhr = new XMLHttpRequest();
     5             } else {
     6                 xhr = new ActiveXobject('Microsoft.XMLHttp')
     7             }
     8             method = method.toUpperCase();
     9             if(method == 'GET'){
    10                 xhr.open('GET',url+'?'+data,true);
    11                 xhr.send();
    12             }else{
    13                 xhr.open('POST',url,true);
    14                 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');//不设置请求头不行吗????
    15                 xhr.send(data)
    16 
    17             }
    18    
    19             xhr.onreadystatechange = function () {//ajax是异步的,所有必须监听xhr的发送请求状态变化
    20                 if (xhr.readyState == 4) {   //0:open完成 1:send完成 2接受到服务器响应 3解析响应中 4解析完成
    21                     if (xhr.status == 200) {//404:notfound 500:服务器内部错误 304;取缓存
    22                         callback(xhr.responseText)
    23                     }
    24                 }
    25             }
    26         }

    ajax发送数据后的返回值,为什么要两个状态码都要判断才能够确定responseText是真正的所需数据呢?

    readystate:这个是xhr,XMLHttpRequest的实例对象的状态码,表示ajax发送到获取这一过程中所处的不同状态,分别是0到4.

    status:是根据http协议,服务器所返回的HTTP头信息代码; 注意的是每次网络请求,可以返回多次这个状态码,每一次xhr的readystate变化,都会返回这种状态码;常见的有200,304.404,500等;

    由此可知,单独判断哪一次都不能获取正在的所需数据。

  • 相关阅读:
    取消Git每次拉取、提交推送都要输入密码
    input输入框的oninput和onchange事件
    NPM学习笔记
    命令行语法格式中常用符号的含义
    npm卸载模块报错
    软件的Alpha、Beta、GM、OEM、LTS等版本的含义(转)
    MySQL常用指令
    Git常用指令
    .net Core 解决Form value count limit 1024 exceeded. (文件上传过大)
    EF Core 迁移整理
  • 原文地址:https://www.cnblogs.com/dangdanghepingping/p/10166884.html
Copyright © 2011-2022 走看看