AJAX(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过AJAX,网页应用程序能够异步地与服务器进行通信,即在不重新加载整个网页的情况下,更新部分网页内容。
XMLHttpRequest (XHR) 是 AJAX 的核心技术,它是一个 JavaScript 对象,允许客户端通过 HTTP 请求与服务器交互。XHR 可以发送请求并接收响应,而无需刷新整个页面。
AJAX 请求通常有以下几种类型:
以下是一个简单的 AJAX GET 请求示例:
// 创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
// 配置请求
xhr.open('GET', 'https://api.example.com/data', true);
// 设置响应类型
xhr.responseType = 'json';
// 定义请求完成后的处理函数
xhr.onload = function() {
if (xhr.status === 200) {
// 成功获取数据
console.log(xhr.response);
} else {
// 请求失败
console.error('Error:', xhr.statusText);
}
};
// 定义请求错误处理函数
xhr.onerror = function() {
console.error('Network Error');
};
// 发送请求
xhr.send();
问题:跨域请求失败
原因:浏览器的同源策略限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。
解决方法:
Access-Control-Allow-Origin
头允许特定的外部域访问资源。<script>
标签不受同源策略限制的特性,但只支持 GET 请求。示例:使用 CORS
服务器端设置:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
客户端请求不变,浏览器会自动处理 CORS。
通过以上信息,你应该能够理解 AJAX 和 XMLHttpRequest 的基础概念、优势、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云