首页 > 编程语言 >javascript高级编程系列 - 使用XMLHttpRequest发送请求

javascript高级编程系列 - 使用XMLHttpRequest发送请求

时间:2024-04-25 17:56:51浏览次数:24  
标签:responseType 编程 XMLHttpRequest javascript xhr 服务器返回 var 属性

XMLHttpRequest

  1. 通过XMLHttpRequest发送get请求
// 创建XMLHttpRequest实例对象
const xhr = new XMLHttpRequest();
//  监听通信状态
xhr.onreadystatechange = function(){
  // 请求结束,处理服务器返回的数据
  if (xhr.readyState === 4){
    // http状态码为200表示成功返回
    if (xhr.status === 200){
      console.log(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
  else {
    // 显示正在加载中...
  }
};
// 监听通信出错时的处理函数
xhr.onerror = function (e) {
  console.error(xhr.statusText);
};
// 添加发送请求的参数: 请求方法,url, 是否异步
xhr.open('GET', '/endpoint', true);
// 发送实际请求, GET请求参数为null
xhr.send(null);
  1. XMLHttpRequest对象的实例属性和方法
  • readyState
0 - 表示 XMLHttpRequest 实例已经生成,但是实例的open()方法还没有被调用。
1 - 表示open()方法已经调用,但是实例的send()方法还没有调用,仍然可以使用实例的setRequestHeader()方法,设定 HTTP 请求的头信息。
2 - 表示实例的send()方法已经调用,并且服务器返回的头信息和状态码已经收到。
3 - 表示正在接收服务器传来的数据体(body 部分)。这时,如果实例的responseType属性等于text或者空字符串,responseText属性就会包含已经收到的部分信息。
4 - 表示服务器返回的数据已经完全接收,或者本次接收已经失败。
  • onreadystatechange
    onreadystatechange属性指向一个监听函数。readystatechange事件发生时(实例的readyState属性变化),就会执行这个属性。

  • responseType
    responseType属性是一个字符串,表示服务器返回数据的类型。这个属性是可写的,可以在调用open()方法之后、调用send()方法之前,设置这个属性的值,告诉服务器返回指定类型的数据。

XMLHttpRequest.responseType属性可以等于以下值。

""(空字符串):等同于text,表示服务器返回文本数据。
"arraybuffer":ArrayBuffer 对象,表示服务器返回二进制数组。
"blob":Blob 对象,表示服务器返回二进制对象。
"document":Document 对象,表示服务器返回一个文档对象。
"json":JSON 对象。
"text":字符串。
  • response
    response属性表示服务器返回的数据体(即 HTTP 回应的 body 部分)。它可能是任何数据类型,比如字符串、对象、二进制对象等等,具体的类型由XMLHttpRequest.responseType属性决定。该属性只读。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
  if (this.status === 200) {
    var blob = new Blob([xhr.response], {type: 'image/png'});
    // 或者
    var blob = xhr.response;
  }
};
xhr.send();
var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
  var uInt8Array = new Uint8Array(this.response);
  for (var i = 0, len = uInt8Array.length; i < len; ++i) {
    // var byte = uInt8Array[i];
  }
};
xhr.send();
  • responseText
    responseText属性返回从服务器接收到的字符串,该属性为只读。只有 HTTP 请求完成接收以后,该属性才会包含完整的数据。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/server', true);
xhr.responseType = 'text';
xhr.onload = function () {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log(xhr.responseText);
  }
};
xhr.send(null);
  • responseXML
    responseXML属性返回从服务器接收到的 HTML 或 XML 文档对象,该属性为只读。如果本次请求没有成功,或者收到的数据不能被解析为 XML 或 HTML,该属性等于null。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/server', true);
xhr.responseType = 'document';
xhr.overrideMimeType('text/xml');
xhr.onload = function () {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log(xhr.responseXML);
  }
};
xhr.send(null);

标签:responseType,编程,XMLHttpRequest,javascript,xhr,服务器返回,var,属性
From: https://www.cnblogs.com/xiaodi-js/p/18158013

相关文章

  • 深入理解多线程编程
    title:深入理解多线程编程date:2024/4/2517:32:02updated:2024/4/2517:32:02categories:后端开发tags:线程同步互斥锁死锁避免竞态条件线程池异步编程性能优化第一章:多线程基础1.1线程概念与原理线程:在操作系统中,一个程序可以被划分为多个执行流,每个......
  • JavaScript基本语法
    JavaScript基本语法变量变量是用于存放数据的容器,我们通过变量名获取数据,甚至数据可以修改。变量本质是程序在内存中申请的一块用来存放数据的空间。变量的使用变量在使用时分为两步:1.声明变量2.赋值变量的声明varname;声明一个变量,没有初始化var是一个JS关键字,用......
  • JavaScript简介
    JavaScript简介JavaScript是什么JavaScipt是运行在客户端(浏览器)上的一种编程语言(脚本语言)注:脚本语言:不需要编译,运行过程中由js解释器逐行解释并且执行现在也可以基于node.js技术进行服务器编程浏览器分成两部分∶渲染引擎和JS引擎渲染引擎︰用来解析HTML与CSS,俗称内核,比......
  • JavaScript对象
    JavaScript对象一、数组数组(Array)是指一组数据的集合,其中的每个数据被称作元素,数组是属于内置对象,数组和普通对象的功能类似,都可以用来存储一些值。不同的是:普通对象是使用字符串作为属性名,而数组是使用数字作为索引来操作元素。索引:从0开始的整数就是索引。在数组中......
  • JavaScript元素
    JavaScript元素一.常量常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。常量有下面这几种:数字常量(数值常量)字符串常量布尔常量自定义常量1.1数字常量数字常量非常简单,直接写数字就行,不需要任何其他的符号。既可以是整数,也可以是浮点数。consol......
  • JavaScript基本数据类型
    JavaScript基本数据类型上述一章我们讲到JS数据类型分为基本数据类型与引用数据类型,这张我们主要讲基本数据类型基本数据类型-String字符串字符串是我们开发中经常使用的一种数据类型,主要是双引号""或者单引号''注意事项单引号与双引号不能混用,必须配对使用同类引......
  • Javascript的数据类型和json数组
    4个数据类型:NumberStringBooleanUndefinedalert(parseInt(k));//如果不是数字会输出NaN,从第一个字符开始输出数字,直到不是数字后返回值。json数组://js中k、v型数据,使用jsonvarperson={name:"张三",//注意里面的元素用,分割。定义的是key是name的value值为张三age......
  • javaScript for-in循环
    for-infor-in循环是专门为循环对象设置的,因为对象没有长度没有顺序,所以不能使用for循环。for-in循环可以循环数组和对象,推荐循环对象的时候使用constobj={name:"LiuQing",age:18,sex:'男'}for(constkeyinobj){consol......
  • 并发编程(Phaser)
    Phaser,翻译为移相器(阶段),它适用于这样一种场景,一个大任务可以分为多个阶段完成,且每个阶段的任务可以多个线程并发执行,但是必须上一个阶段的任务都完成了才可以执行下一个阶段的任务Phaser使用方法Phaser同时包含CyclicBarrier和CountDownLatch两个类的功能。Phaser的arrive方法......
  • Java之oop(面向对象编程)
    目录面向对象编程(OOP)一、面向过程与面向对象二、Java基本元素:类和对象三、对象的创建与使用1.对象的使用2.内存解析3.匿名对象四、类的成员1.属性1.1概念1.2分类2.方法2.1声明格式2.2方法的重载2.3可变形参的方法2.4方法参数的值传递机制2.5递归方法3.构造器4.代码块5.......