XMLHTTPRequest 对象是一个用于从服务器获取数据的 API。它基本上被应用于 Ajax 编程中。它可以检索任何类型的数据,例如 json、xml、text 等。它在后台请求数据,并在客户端无需重新加载页面的情况下更新页面。XMLHTTPRequest 对象用于客户端和服务器之间的异步通信。我们可以使用 $.ajax() 方法来创建 XMLHTTPRequest 对象。
$.ajax() 方法在后台执行以下步骤:
- 从后台发送数据。
- 接收来自服务器的数据。
- 在不重新加载页面的情况下更新网页。
下面我们将看看如何使用 $.ajax() 方法创建 XMLHTTPRequest 对象:
语法:
var XHR = $.ajax({configs});
示例:
JavaScript
CODEBLOCK_8bc1b665
现在我们将看看我们可以从服务器检索的数据的数据类型,以及针对各种数据类型我们拥有哪些预处理器。
数据类型: 这些是我们可以向服务器请求的数据类型。可用的数据类型包括 text、xml、html、script、jsonp 和 json。基于这些数据类型,我们在将响应传递给 XMLHTTPRequest 对象的处理程序之前,会指定相应的预处理器。以下是指定数据类型的预处理器:
- Text: 如果数据类型是 text,则不对响应应用预处理器。它可以通过 XMLHTTPRequest 对象的 responseText 属性访问。
- xml: 在 XML 的情况下,会对响应应用
jQuery.parseXML预处理器,然后作为 xml 文档传递给处理程序。它可以通过 XMLRequestHTTPRequest 对象的 responseXML 属性访问。 - html: 在 html 数据类型的情况下,我们不为响应指定任何预处理器。可以使用 responseText 属性访问它。
- string: 在 script 的情况下,脚本将首先运行,然后以字符串的形式传递给处理程序。
- jsonp: 在请求 jsonp 的情况下,我们必须指定
$.ajax()方法的 jsonpCallback 属性。该属性将在将 json 对象传递给后续处理程序之前执行。 - json: 在 json 的情况下,响应会在将对象传递给处理程序之前通过
jQuery.parseJSON进行解析。
属性: XMLHTTPRequest 对象有许多有用的类属性,这有助于灵活地处理响应。XMLHTTPRequest 对象的属性包括:
- readyState: 此属性指示连接的状态。
- status: 它包含来自服务器的 http 响应代码。
- statusText: 它包含来自服务器的 http 响应字符串。responseText:它包含来自服务器的文本格式响应。
- responseXML: 它包含来自服务器的响应 Xml。
- getAllResponseHeaders: 此属性以字符串形式返回所有标头名称。
- getResponseHeader: 它接受标头名称并返回标头的文本值。
- setRequestHeader: 它用于设置请求标头的值。
- overrideMimeType: 此属性用于设置 mime 类型,用于将响应数据类型视为 Text 或 XML 类型。
示例:
JavaScript
CODEBLOCK_565d0875
输出:
# 请求状态为 : 200
# 请求的 readyState 为 : 4
# 请求的 statusText 为 : success
# 请求的所有响应标头为 : function(){return h?p:null}
下面是 XMLHTTPRequest 对象的一些属性示例:
方法: 我们知道 XMLHTTPRequest 进行异步通信,因此它返回 promise。我们有许多 jQuery XMLHTTPRequest 对象的 promise 方法。可用的 promise 方法有:
- xmlObject.then(): 此方法接受两个回调函数 func1、func2 作为参数。当 promise 成功解决时调用 func1。当请求失败时调用 func2。
- xmlObject.always(): 此方法接受单个回调函数。此方法使处理程序在请求被解决或被拒绝时调用。无论请求结果如何,参数函数总是会被调用。
- xmlObject.done(): 此方法接受单个回调函数。当我们的请求被解决时,将调用此方法。参数函数将随请求的解决一起运行。
- xmlObject.fail(): 此方法接受单个回调函数…