diff --git "a/\346\261\237\346\231\272\346\235\260/20241202 ajax/ajax.md" "b/\346\261\237\346\231\272\346\235\260/20241202 ajax/ajax.md" new file mode 100644 index 0000000000000000000000000000000000000000..52d4d86561ff1e82a9c3c772a7f59e15ba72792c --- /dev/null +++ "b/\346\261\237\346\231\272\346\235\260/20241202 ajax/ajax.md" @@ -0,0 +1,80 @@ +# AJAX 笔记 + +AJAX(Asynchronous JavaScript and XML)是一种用于创建交互式网页应用的技术。它允许在不重新加载整个页面的情况下,与服务器进行异步数据交换,从而实现页面的局部更新。以下是关于 AJAX 的详细笔记: + +## 1. AJAX 的基本概念 + +定义 AJAX 是 Asynchronous JavaScript and XML 的缩写。它是一种在浏览器中与服务器进行异步通信的技术 + +数据传输 AJAX 可以使用多种数据格式进行传输,包括 XML、JSON(现在更常用)和纯文本 + +#### 2. AJAX 的工作原理 + +- 异步交互: AJAX 允许客户端在发送请求后,无需等待服务器响应即可继续执行其他操作。这使得用户体验更加流畅 + +- 四步操作: + + 1. **创建 XMLHttpRequest 对象**: 这是 AJAX 的核心对象,用于发送请求和接收响应 + + 2. **打开与服务器的连接**: 使用 `open()` 方法,指定请求方法(GET 或 POST)、URL 和是否为异步请求 + + 3. **发送请求**: 使用 `send()` 方法发送请求。对于 GET 请求,参数为 `null`;对于 POST 请求,参数为请求体 + + 4. **处理响应**: 通过 `onreadystatechange` 事件监听器处理服务器的响应。通常在 `readyState` 为 4 且 `status` 为 200 时处理响应数据 + +#### 3. AJAX 的优点与缺点 + +- 优点: + + - 增强用户体验,无需刷新整个页面即可更新内容。 + - 减轻服务器压力,因为只需响应部分内容。 + +- 缺点: + + - 可能导致对服务器的访问次数增加。 + + - 存在跨域问题,限制了不同域之间的数据交换 + + +#### 4. AJAX 的应用场景 + +- **动态数据加载**: 如搜索建议、实时评论更新等。 + +- **表单验证**: 在用户提交表单前进行数据验证。 + +- 局部更新: 动态加载页面内容,如新闻滚动条 + + +#### 5. AJAX 的示例代码 + +以下是一个简单的 AJAX 示例,使用 GET 请求获取服务器数据: + +```javascript +function createXMLHttpRequest() { + try { + return new XMLHttpRequest(); + } catch (e) { + try { + return new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + return new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) { + alert("您的浏览器不支持 AJAX!"); + throw e; + } + } + } +} + +function fetchData() { + var xmlHttp = createXMLHttpRequest(); + xmlHttp.open("GET", "/path/to/resource", true); + xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { + document.getElementById("result").innerHTML = xmlHttp.responseText; + } + }; + xmlHttp.send(null); +} +```