在Ajax中,第二次调用的响应通常不会包含第一次Ajax的响应。如果需要在第二次调用中获取第一次Ajax的响应,可以使用回调函数或者Promise来处理。
使用回调函数的解决方法如下所示:
function ajaxRequest(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = xhr.responseText;
callback(response); // 调用回调函数,并将响应作为参数传递
}
};
xhr.open("GET", url, true);
xhr.send();
}
// 第一次Ajax请求
ajaxRequest("first_url", function(response) {
// 处理第一次Ajax的响应
// 第二次Ajax请求
ajaxRequest("second_url", function(secondResponse) {
// 处理第二次Ajax的响应
console.log(response); // 第一次Ajax的响应
console.log(secondResponse); // 第二次Ajax的响应
});
});
使用Promise的解决方法如下所示:
function ajaxRequest(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.responseText); // 使用resolve返回响应
} else {
reject(xhr.statusText); // 使用reject返回错误信息
}
}
};
xhr.open("GET", url, true);
xhr.send();
});
}
// 第一次Ajax请求
ajaxRequest("first_url")
.then(function(response) {
// 处理第一次Ajax的响应
// 第二次Ajax请求
return ajaxRequest("second_url");
})
.then(function(secondResponse) {
// 处理第二次Ajax的响应
console.log(response); // 第一次Ajax的响应
console.log(secondResponse); // 第二次Ajax的响应
})
.catch(function(error) {
// 处理错误信息
console.log(error);
});
使用回调函数或Promise可以在第二次Ajax请求中获取第一次Ajax的响应,并进行相应的处理。
下一篇:ajax定时向服务器轮询