目录
前言
Ajax是一种无刷新异步编程技术,它通过JavaScript的XMLHttpRequest对象与服务器进行异步交互,可以在不加载刷新整个页面的情况下,与服务器交换数据实现部分网页更新。本篇文章将从以下几个部分分享:
一、Ajax工作原理分析
当浏览器发生某事件时,创建XMLHttpRequest对象,发送HttpRequest给服务器。服务器处理HttpRequest,响应并返回数据给浏览器。浏览器用JS处理数据,更新页面。
二、XMLHttpReQuest对象的属性、方法
属性 | 属性值 |
onreadystatuschange:状态改变触发事件处理器 | |
readyState:请求/响应活动阶段 | 0、1、2、3、4 |
status:来自服务器信息 | 200、400... |
statusText:伴随status文本 | - |
responseText:服务器响应文本 | - |
responseXML:服务器响应XML数据,可解析为DOM对象 | - |
方法 | 功能与使用 |
setRequestHeader(header.value) | 请求发送前设置请求头 |
open(method、url、async、user、password) | 初始化请求参数 |
send(data) | 向服务器发送请求 |
sendRequestHeader() | 为请求HTTP头设置值,在open()方法后使用 |
getRequestHeader() | 返回字符串形式指定的HTTP头信息 |
getALLRequestHeader() | 返回字符串形式完整的HTTP头信息 |
abort() | 取消请求 |
三、XMLHttpRequest对象的使用与详细分析
使用JSONPlaceHolder作为数据服务
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>XMLHttpRequest Example</title>
</head>
<body>
<button id="loadUsers">加载用户</button>
<div id="userList"></div>
<script src="script.js"></script>
</body>
</html>
document.getElementById('loadUsers').addEventListener('click', function() {
var xhr = new XMLHttpRequest();
var url = 'https://jsonplaceholder.typicode.com/users';
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var users = JSON.parse(xhr.responseText);
var userList = document.getElementById('userList');
userList.innerHTML = ''; // 清空之前的内容
users.forEach(function(user) {
var listItem = document.createElement('li');
listItem.textContent = user.name;
userList.appendChild(listItem);
});
}
};
xhr.open('GET', url, true);
xhr.send();
});
在这个案例中,我们有一个按钮和一个空的div
元素用于显示用户列表。当点击按钮时,我们创建一个新的XMLHttpRequest
对象,并设置其onreadystatechange
事件处理器来处理响应。
在事件处理器中,我们检查readyState
和status
来确定请求是否成功完成。如果是,我们解析响应文本为JSON对象,并遍历用户数组来创建列表项,最后将它们添加到div
元素中。
此外,我们还可以使用XMLHttpRequest进行POST请求,发送表单数据到服务器,或者设置请求头进行身份验证等操作。这些应用场景都可以通过调整open
方法的参数和使用send
方法发送数据来实现。
总之,这种无刷新的特性使得AJAX在创建交互式网页应用时非常有用,因为它可以保持用户的当前页面状态不变,同时实现数据的实时更新。而异步的特性则允许在等待服务器响应的过程中,继续执行其他操作,提高了网页的响应速度和用户体验。