
AJAX,即Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 核心观点包括:通过XMLHttpRequest对象、发送异步请求、处理响应数据、跨域请求处理、与JSON数据交互。下面将详细描述通过XMLHttpRequest对象来发送异步请求这一点。
通过XMLHttpRequest对象发送异步请求:这是AJAX操作的核心步骤。XMLHttpRequest对象是AJAX的基础,通过它可以向服务器发送请求并处理响应。你可以创建一个XMLHttpRequest对象,然后使用它的open方法来指定请求的类型和目标URL,最后调用send方法来发送请求。请求可以是GET或POST类型,GET请求通常用于从服务器获取数据,而POST请求则用于向服务器发送数据。
一、创建XMLHttpRequest对象
要开始使用AJAX,首先需要创建一个XMLHttpRequest对象。这个对象在不同浏览器中的创建方式可能略有不同,但大多数现代浏览器都支持标准的创建方式。
let xhr = new XMLHttpRequest();
在旧版本的Internet Explorer中,你可能需要使用ActiveXObject来创建XMLHttpRequest对象:
let xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// For old versions of IE
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
二、配置请求
创建了XMLHttpRequest对象后,你需要使用其open方法来配置请求。open方法接受三个参数:请求类型(GET或POST)、目标URL、以及一个布尔值表示是否异步。
xhr.open('GET', 'https://api.example.com/data', true);
三、发送请求
配置好请求后,可以调用send方法来发送请求。如果是GET请求,send方法通常不需要传递参数;如果是POST请求,则可以传递请求体数据。
xhr.send();
四、处理响应
当服务器响应请求后,XMLHttpRequest对象会触发一些事件,你可以通过监听这些事件来处理响应数据。最常用的是onreadystatechange事件,它在readyState属性变化时被触发。
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
let response = xhr.responseText;
console.log(response);
}
};
五、跨域请求处理
跨域请求是指在一个域名下的网页向另一个域名请求数据。由于安全原因,浏览器通常会阻止这种操作。要解决跨域问题,可以使用CORS(跨源资源共享)或者JSONP。
CORS
CORS是一种安全机制,它允许服务器设置特定的HTTP头来指示浏览器允许跨域请求。
xhr.open('GET', 'https://api.example.com/data', true);
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.send();
JSONP
JSONP是一种通过动态插入