📜  什么是 XMLHTTPRequest 对象?

📅  最后修改于: 2022-05-13 01:56:01.977000             🧑  作者: Mango

什么是 XMLHTTPRequest 对象?

XMLHTTPRequest 对象是一个用于从服务器获取数据的 API。 XMLHTTPRequest 基本上用于 Ajax 编程。它检索任何类型的数据,例如 json、xml、文本等。它在后台请求数据并更新页面,而无需在客户端重新加载页面。 XMLHTTPRequest 对象用于客户端和服务器之间的异步通信。 $.ajax() 方法用于创建 XMLHTTPRequest 对象。

$.ajax() 在后台执行以下步骤:

  • 从后台发送数据。
  • 从服务器接收数据。
  • 更新网页而不重新加载页面。

下面我们将看到如何使用 $.ajax() 方法创建 XMLHTTPRequest 对象:

句法:

var XHR = $.ajax({configs});

例子:

JavaScript
// Example showing how XMLHTTPRequest object created
var XMLO = $.ajax({
 
    // Our sample URL to make the request
    url: 'https://jsonplaceholder.typicode.com/todos/1',
 
    // type of Request
    type: "GET"
});


JavaScript
// Demonstrating Properties of XMLHTTPRequest object


JavaScript
// Example demonstrating methods of XMLHTTPRequest
// object


现在我们将看到我们可以从服务器检索的数据的数据类型,以及我们为各个数据类型拥有的预处理器。

数据类型:这些是我们可以向服务器请求的数据类型。可用的数据类型有 text、xml、html、script、jsonp 和 json。在这些数据类型的基础上,我们在将响应处理到 XMLHTTPRequest 对象的处理程序之前指定对响应的预处理器。以下是指定数据类型的预处理器:

  • 文本:如果数据类型是文本,则不对响应应用预处理器。它可以通过 XMLHTTPRequest 对象的 responseText 属性来访问。
  • xml:在 XML 的情况下,预处理器 jQuery.parseXML 应用于响应,然后作为 xml 文档传递给处理程序。它可以通过 XMLRequestHTTPRequest 对象的 responseXML 属性来访问。
  • html:对于 html 数据类型,我们不指定任何预处理器来响应。可以使用 responseText 属性访问它。
  • 字符串:如果是脚本,脚本将首先运行,然后以字符串的形式处理给处理程序。
  • jsonp:如果请求 jsong,我们必须指定 $.ajax() 方法的 jsonpCallback 属性。这将在将 json 对象传递给后继处理程序之前执行。
  • json:在 json 的情况下,在将对象传递给处理程序之前,会将响应解析为 jQuery.parseJSON。

属性: XMLHTTPRequest 对象有许多有用的类属性,有助于灵活处理响应。 XMLHTTPRequest 对象属性是:

  • readyState:这个属性表示连接的状态。
  • status:它包含来自服务器的 http 响应代码。
  • statusText:它包含来自服务器的 http 响应字符串。responseText:它包含来自服务器的文本格式的响应。
  • responseXML:它包含来自服务器的响应 XML。
  • getAllResponseHeaders:此属性以字符串形式返回所有标头名称。
  • getResponseHeader:获取标题的名称并返回标题的文本文本值。
  • setReaquestHeader:用于设置请求头的值。
  • overrideMimeType:此属性用于设置 mime 类型,用于将响应数据类型视为 Text 或 XML 类型。

例子:

JavaScript

// Demonstrating Properties of XMLHTTPRequest object

输出:

# Status of request is : 200
# readyState of request is : 4
# statusText of request is : success
# All Response Headers of request is : function(){return h?p:null}

下面是 XMLHTTPRequest 对象的一些属性的示例:

方法:我们知道 XMLHTTPRequest 进行异步通信,结果它返回承诺。我们有很多 jQuery XMLHTTPRequest 对象的 promise 方法。可用的承诺方法有:

  • xmlObject.then():该方法以两个回调函数func1、func2为参数。当 promise 成功解决时调用 func1。请求失败时调用 func2 。
  • xmlObject.always():此方法采用单个回调函数。此方法使处理程序在请求被解决或被拒绝时调用。参数函数总是被调用而不关心请求。
  • xmlObject.then():此方法接受单个回调函数。当我们的请求得到解决时,将调用此方法。参数函数将在请求解析的情况下运行。
  • xmlObject.fail():此方法接受单个回调函数。当我们的请求被拒绝时调用此方法。请求回调函数rereflection后解析。

下面是 XMLHTTPRequest 对象的一些方法的示例:

例子:

JavaScript

// Example demonstrating methods of XMLHTTPRequest
// object

输出:

#Always is resolved 
#Done is resolved 
#Then is resolved