Categories: AJAX 教程

XHR 创建对象

AJAX – 创建 XMLHttpRequest 对象

 XMLHttpRequest 是 AJAX 的基础。

 XMLHttpRequest 术语缩写为XHR,中文可以解释为可扩展超文本传输请求。

 XMLHttpRequest 对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。

 XMLHttpRequest的对象用于客户端和服务器之间的异步通信。

 它执行以下操作:

  1. 在后台从客户端发送数据
  2. 从服务器接收数据
  3. 更新网页而不重新加载。

XMLHttpRequest 对象


 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

 XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

创建 XMLHttpRequest 对象

所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

创建 XMLHttpRequest 对象的语法:

variable=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

variable=new ActiveXObject("Microsoft.XMLHTTP");

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject。

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tryrun 1</title>
</head>
<body>
    <div id="view">
        <p>点击下面的按钮,将 Ajax 请求回来的数据更新在该文本内</p>
    </div>
    <button type="button" id="btn">发起 Ajax 请求</button>

    <script>
        document.getElementById("btn").onclick = ajaxRequest;

        function ajaxRequest () {
            var xhr = new XMLHttpRequest();

            xhr.open("GET", "ajax_info.txt", true);
            xhr.send();

            xhr.onreadystatechange = function(){
                if (xhr.readyState === 4 && xhr.status === 200) {
                    document.getElementById("view").innerHTML = xhr.responseText;
                }                
            }
        }
    </script>
</body>

其中ajax_info.text内容如下:

<p>Ajax 的全称是 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是一种用于创建动态网页的技术。</p>
<p>Ajax 技术指的是脚本独立向服务器请求数据,拿到数据以后,进行处理并更新网页。</p>

大家可以试试。

现在,你已经学会如何创建 XMLHttpRequest 对象了(这是学习AJAX的基础),接下来,在下一章中,您将学习发送服务器请求的知识。

XMLHttpRequest对象的属性

XMLHttpRequest对象的常见属性如下:

属性描述
onreadystatechange存储函数(或函数名),每当readyState的属性改变时,就会调用该函数。
readyState存有的XMLHttpRequest的状态从0到4发生变化。

0:请求未初始化

1:服务器连接已建立

2:请求已接收

3:请求处理中

4:请求已完成,且响应已就绪
responseText以文本形式返回响应。
responseXML以XML格式返回响应
status将状态返回为数字(例如,“Not Found”为404,“OK”为200)
statusText以字符串形式返回状态(例如,“Not Found”或“OK”)

XMLHttpRequest对象的方法

XMLHttpRequest对象的重要方法如下:

方法描述
abort()

 

 

取消当前请求。
getAllResponseHeaders()

 

 

以字符串形式返回完整的HTTP标头集。

 

getResponseHeader( headerName )

 

 

返回指定HTTP标头的值。
void open(method,URL)打开指定获取或交的方法和URL的请求。
void open(method,URL,async)与上面相同,但指定异步或不。
void open(method,URL,async,userName,password)与上面相同,但指定用户名和密码。
void send(content)发送获取请求。
setRequestHeader( label,value)将标签/值对添加到要发送的HTTP标头。

相关知识

Ajax XMLHttpRequest

XMLHttpRequest 对象是 Ajax 的关键。它从 2000 年 7 月发布的 IE 5.5 开始可用,但是直到 2005 年 Ajax 和 Web 2.0 变得流行起来它都没有完全被发觉。

XMLHttpRequest (XHR) 是一个可以用 JavaScript,JScript,VBScript 和其他 Web 浏览器脚本语言传输和操作 XML 数据,以及使用 HTTP 从 Web 服务器上在网页客户端和服务端之间建立一个独立连接通道的 API。

调用 XMLHttpRequest 返回的数据通常都由后端数据库提供。除了 XML 之外,XMLHttpRequest 还可以用来获取其他格式的数据,例如 JSON 或者是纯文本。

我们已经见过好几个讲述如何创建 XMLHttpRequest 对象的例子了。

下面列出的是一些我们必须熟悉的方法和属性。

XMLHttpRequest 方法

1、abort()
取消当前请求。

2、getAllResponseHeaders()
返回整套 HTTP 头字符串。

3、getResponseHeader( headerName )
返回指定 HTTP 头的值。

4、
open( method, URL )
open( method, URL, async )
open( method, URL, async, userName )
open( method, URL, async, userName, password )

指定请求的方法,URL 以及其他可选属性。

方法参数可以是 “GET”,”POST” 或者 “HEAD” 中的一个值。也可以是其他 HTTP 方法,比如 “PUT” 和 “DELETE”(主要用于 REST 应用程序中)。

“async” 参数指定该请求是否应该异步处理。”true” 意味着脚本处理发生在 send() 方法之后而不必等待响应,而 “false” 意味着继续脚本处理之前脚本要等待响应。

5、send( content )
发送请求。

6、setRequestHeader( label, value )
给 HTTP 头添加一个标签/值对进行发送。

XMLHttpRequest 属性

1、onreadystatechange
一个用于事件的事件处理程序,每个状态变化时都会触发。

2、readyState
readyState 属性定义了 XMLHttpRequest 对象的当前状态。

下面的表格提供了一个 readyState 属性可能值的列表:

状态描述
0请求还未初始化。
1请求已经建立。
2请求已经发送。
3请求正在处理。
4请求已经完成。

readyState = 0
在 XMLHttpRequest 对象创建之后,但是在我们调用 open() 方法之前。

readyState = 1
在调用 open() 方法之后,但是在调用 send() 之前。

readyState = 2
在我们调用 send() 之后。

readyState = 3
在浏览器建立与服务器的通信之后,但是在服务器完成响应之前。

readyState = 4
在请求完成以及响应数据已经完全从服务器接受之后。

3、responseText 返回响应字符串。

4、responseXML
返回响应的 XML 数据。这个属性返回一个 XML 文档对象,我们可以使用 W3C DOM 节点树方法和属性检查并解析它。

5、status
返回状态数字(比如 404 表示 “Not Found” 或者 200 表示 “OK”)。

6、statusText
返回状态字符串(比如 “Not Found” 或者 “OK”)。

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

7 天 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

4 周 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago