首页 > 其他分享 >XMLHttpRequest xhr请求

XMLHttpRequest xhr请求

时间:2023-09-12 10:33:15浏览次数:37  
标签:status XMLHttpRequest log statusText xhr console 请求

1.属性

① readyState:xhr的状态码。
② status:http状态码。
③ statusText:http状态说明文本。
④ response:响应。(可通过xhr.response获取响应体数据)
⑤ responseType:响应类型。
⑥ responseURL:响应的URL路径。
⑦ responseText:响应的文本数据。
⑧ responseXML:响应的XML数据。

2.异步请求

var xhr = new XMLHttpRequest();
xhr.open("GET", "/bar/foo.txt", true);   //true:表示该请求应该以异步模式执行
xhr.onload = function (e) {   // onl oad:回调函数是在异步请求加载完成后所执行的函数
    if (xhr.readyState === 4) {  //响应已完成;您可以获取并使用服务器的响应了   readyState状态值1,2.3,4
        if (xhr.status === 200) {  // 获取状态码
            console.log(xhr.responseText);
        } else {
            console.error(xhr.statusText);
        }
    }
};
xhr.onerror = function (e) {   // one rror:在请求服务错误时,触发事件
    console.error(xhr.statusText);
    console.error("在请求服务错误时,触发事件");
};
xhr.ontimeout = function () {  //请求超时之后会被触发
    console.log("请求超时之后会被触发!")
};
xhr.onabort = function(){  //取消请求。同abort()方法一同使用,当调用abort()方法时,onabort事件会被触发(仅触发一次)
	console.log("取消请求")
	root.innerHTML = "请求被取消啦!"
};
xhr.onreadystatechange = function () {   // 当 xhr.readystate发生改变后会调用。
    if (xhr.readyState === 1) {  // 请求已经建立,但是还没有发送,还没有调用 send()
        xhr.setRequestHeader("a", 1);
        xhr.setRequestHeader("b", 2);
        //group分组的意思,输出将以会以分组列表的形式输出
        console.group("****************1********************");
        console.log("status", xhr.status);
        console.log("statusText", xhr.statusText);
        console.log("getAllResponseHeaders", xhr.getAllResponseHeaders());
        console.log("response", xhr.response);
        console.groupEnd();
    } else if (xhr.readyState === 2) {  // 请求已发送,正在处理中(通常现在可以从响应中获取内容头)
        console.group("****************2********************");
        console.log("status:", xhr.status);
        console.log("statusText:", xhr.statusText);
        console.log("getAllResponseHeaders:", xhr.getAllResponseHeaders());
        console.log("response", xhr.response);
        console.groupEnd();
    } else if (xhr.readyState === 3) {  // 请求在处理中;通常响应中已有部分数据可用了,没有全部完成。
        console.group("****************3********************");
        console.log("status:", xhr.status);
        console.log("statusText:", xhr.statusText);
        console.log("getAllResponseHeaders:", xhr.getAllResponseHeaders());
        console.log("response", xhr.response);
        console.groupEnd();
    } else if (xhr.readyState === 4) {  // 响应已完成;您可以获取并使用服务器的响应了
        console.group("****************4********************");
        console.log("status:", xhr.status);
        console.log("statusText:", xhr.statusText);
        console.log("getAllResponseHeaders:", xhr.getAllResponseHeaders());
        console.log("response", xhr.response);
        console.groupEnd();
    }
}
xhr.send(null); //启动了请求。只要请求的状态发生变化,就会调用回调程序。

3.同步请求

var request = new XMLHttpRequest();
request.open("GET", "http://www.mozilla.org/", false);
request.send(null);
if (request.status === 200) {
  console.log(request.responseText);
}

  

  

 

标签:status,XMLHttpRequest,log,statusText,xhr,console,请求
From: https://www.cnblogs.com/yoyo1216/p/17695383.html

相关文章

  • 记录一个比较完善的php的curl请求方法的demo
    functionhttpRequest($url,$dataStr="",$isPost=0,$headers=[]){$httpInfo=[];$ch=curl_init();curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0(Window......
  • selenium4 请求chrome 如何添加header请求头
    前言selenium的webdriver本身没有api能做这个事情,详见issue。国内的博客全抄来抄去,说selenium直接加add_argument参数就好了,弄得找了好几天找代码问题,上外网查秒解决。所以要学好计算机还是得英文呐~~我用requests登录后,获取到了认证信息,但是接下来的请求我不再使用requests,而......
  • 使用RestTemplate发送POST请求
    一、添加RestTemplate依赖在使用RestTemplate之前,需要向项目中添加相应的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>在Gradle项......
  • 封装http请求工具
          ......
  • OpenResty获取请求参数
        ......
  • 解决问题:请求被中止:未能创建SSL/TLS安全通道。
    在调用WebClient时,有时报“请求被中止:未能创建SSL/TLS安全通道。”的故障,网上有不少方法是写道在WebClient前加入安全配置协议:ServicePointManager.SecurityProtocol=SecurityProtocolType.Ssl3//|SecurityProtocolType.SystemDefault//注意:不要加入此......
  • 【JS】并发请求调度器实现演示
    控制多个请求的并发度,演示请求的过程和用时结果demo:https://scheduler-smoky.vercel.app/github:https://github.com/zjy4fun/scheduler   <scriptsetuplang="ts">import{ref}from'vue'classScheduler{queue:any[]maxCount:numberrunCoun......
  • 【js】【统计次数】静态页面访问次数 js页面请求次数统计
    ​效果: 源码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>静态页面访问量统计</title></head><body><scripttype="text/javascript">varpgcoun......
  • 小程序网络性能优化:合并请求与智能缓存提升用户体验
    在小程序开发中,网络性能优化是提升用户体验的重要一环。通过合并请求和合理的缓存策略,我们可以有效减少网络请求次数和提升页面加载速度。本文将探讨在小程序中如何优化网络性能,包括合并请求和智能缓存,同时提供代码演示。合并请求合并多个请求可以减少网络延迟,提高加载速度。小程......
  • laravel 通过事务处理两个并发请求同时更新同一条 MySQL 数据
    在处理两个并发请求同时更新同一条MySQL数据的情况时,你需要考虑并发冲突的问题,以确保数据的一致性和完整性。以下是一些解决方法:在Laravel中,你可以使用数据库事务来处理并发更新。在事务中,你可以执行一系列操作,并在操作完成后提交或回滚事务。如果两个请求同时尝试更新相同的......