AJAX002——XMLHttpRequest对象(AJAX的核心对象)
XMLHttpRequest对象
-
XMLHttpRequest对象是AJAX的核心对象,发送请求以及接收服务器数据的返回,全靠它了。
-
XMLHttpRequest对象,现代浏览器都是支持的,都内置了该对象。直接用即可。
-
创建XMLHttpRequest对象
-
var xhr = new XMLHttpRequest();
-
-
XMLHttpRequest对象的方法
方法 | 描述 |
---|---|
abort() | 取消当前请求 |
getAllResponseHeaders() | 返回头部信息 |
getResponseHeader() | 返回特定的头部信息 |
open(method, url, async, user, psw) | 规定请求method:请求类型 GET 或 POSTurl:文件位置async:true(异步)或 false(同步)user:可选的用户名称psw:可选的密码 |
send() | 将请求发送到服务器,用于 GET 请求 |
send(string) | 将请求发送到服务器,用于 POST 请求 |
setRequestHeader() | 向要发送的报头添加标签/值对 |
- XMLHttpRequest对象的属性
属性 | 描述 |
---|---|
onreadystatechange | 定义当 readyState 属性发生变化时被调用的函数 |
readyState | 保存 XMLHttpRequest 的状态。0:请求未初始化 1:服务器连接已建立 2:请求已收到 3:正在处理请求 4:请求已完成且响应已就绪 |
responseText | 以字符串返回响应数据 |
responseXML | 以 XML 数据返回响应数据 |
status | 返回请求的状态号200: "OK"403: "Forbidden"404: “Not Found” |
statusText | 返回状态文本(比如 “OK” 或 “Not Found”) |
readyState
- readyState 为 0 时,表示请求未初始化。此时 XMLHttpRequest 对象已经创建,但尚未调用 open 方法设置请求参数。
- readyState 为 1 时,表示服务器连接已建立。此时已经调用了 open 方法,但还未调用 send 方法发送请求。
- readyState 为 2 时,表示请求已收到。此时已经调用了 send 方法,并且服务器已经接收到了请求。
- readyState 为 3 时,表示正在处理请求。此时服务器正在处理请求,并尚未返回响应。
- readyState 为 4 时,表示请求已完成且响应已就绪。此时服务器已经返回了完整的响应数据,可以通过 status 属性来判断请求的结果是否成功。
status
常见的 HTTP 响应状态码以及它们的含义:
-
1xx(信息类状态码):表示请求已被接收,继续处理。
- 100 Continue:服务器已收到请求的初始部分,客户端应该继续发送剩余的请求。
-
2xx(成功类状态码):表示请求已成功被服务器接收、理解和处理。
- 200 OK:请求成功,正常返回结果。
- 201 Created:请求成功并在服务器上创建了新的资源。
- 204 No Content:请求成功,但响应报文不包含实体主体部分。
-
3xx(重定向类状态码):表示需要进一步操作以完成请求。
- 301 Moved Permanently:请求的资源已被永久移动到新位置。
- 302 Found:请求的资源已临时移动到新位置。
- 304 Not Modified:客户端可以使用缓存的版本。
-
4xx(客户端错误类状态码):表示服务器无法处理客户端的请求。
- 400 Bad Request:请求无效或无法被服务器理解。
- 401 Unauthorized:请求需要用户验证。
- 404 Not Found:请求的资源不存在。
-
5xx(服务器错误类状态码):表示服务器在处理请求时发生了错误。
- 500 Internal Server Error:服务器遇到了意外的错误。
- 503 Service Unavailable:服务器当前无法处理请求。
这只是一部分常见的 HTTP 响应状态码,还有其他许多状态码具有特定的含义。
在实际开发中,了解这些状态码可以帮助你更好地理解和处理与服务器通信的问题。
responseText
responseText
是 XMLHttpRequest 对象的一个属性,用于获取从服务器返回的响应数据,以字符串形式表示。
当我们发送一个异步请求(例如使用 XMLHttpRequest.send()
发送请求)后,服务器会返回响应数据。通过 responseText
属性,我们可以获取到这些响应数据的文本内容。这些文本内容可以是普通文本、HTML、JSON 等格式的数据。
示例用法如下:
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://example.com/api", true);
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var responseText = xhr.responseText;
console.log(responseText);
// 在这里可以对响应数据进行处理
}
};
在以上示例中,当 readyState
的值为 4
(响应数据已经完全接收)且 status
的值为 200
(成功)时,通过 xhr.responseText
获取响应的文本内容,并将其输出到控制台。你可以根据需要对响应数据进行进一步的处理,比如解析 JSON 格式的数据、更新页面内容等等。
open()
open()
方法是 XMLHttpRequest 对象的一个方法,用于设置请求的相关参数。它接受五个参数:
method
:指定请求的方法,通常是 "GET" 或者 "POST"。url
:指定请求的地址,可以是相对路径或绝对路径。async
:一个可选的布尔值参数,指定请求是否异步,默认为 true,即异步请求。user
:一个可选的字符串参数,用于指定用户名,用于需要用户身份验证的请求。psw
:一个可选的字符串参数,用于指定密码,与用户名一同用于用户身份验证。
示例:
javascriptCopy Codexhr.open("GET", "https://example.com/api/", true, "username", "password");
上述代码表示创建了一个使用 GET 方法的异步请求,请求地址为 "https://example.com/api/",并且进行了基本的身份验证,用户名为 "username",密码为 "password"。