解决这个问题的方法是使用回调函数或者Promise对象来处理异步请求的返回结果。
使用回调函数的示例代码如下:
function ajaxRequest(url, successCallback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
successCallback(xhr.responseText);
}
}
xhr.send();
}
ajaxRequest("http://example.com/data", function(response) {
console.log("Ajax data success:", response);
});
使用Promise对象的示例代码如下:
function ajaxRequest(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.responseText);
} else {
reject(xhr.statusText);
}
}
}
xhr.send();
});
}
ajaxRequest("http://example.com/data")
.then(function(response) {
console.log("Ajax data success:", response);
})
.catch(function(error) {
console.log("Ajax data failed:", error);
});
以上代码中,ajaxRequest函数用于发送异步请求,并在请求成功时调用回调函数或者解析Promise对象的resolve,将返回结果传递给回调函数或Promise的then方法。在调用ajaxRequest函数时,传入一个回调函数或处理Promise的then和catch方法,以处理请求成功的结果。
这样,无论是使用回调函数还是Promise对象,当ajax数据成功返回时,代码块将会被执行,并且可以获取到数据的值。