我正在使用此代码来获取 data.dat 的内容。这些是文件:
main.js
function getData() {
var result;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
result = this.responseText.split(",");
}
};
xhttp.open("POST","data.dat",true);
xhttp.send();
return result;
}
data.dat
A,B,C
但是,getData()
返回一个空字符串。当我以这种方式登录this.responseText
时:
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
result = this.responseText.split(",");
}
我得到["A","B","C"]
。我在做什么错了?
答案 0 :(得分:1)
由于AJAX
代表异步JavaScript和XML ,因此您正在使用异步调用来获取所需的输出。问题在于,return result
调用结束之前,AJAX
语句已被返回,这就是为什么您收到空结果的原因。
您应该使用callback
函数。
function getData(callback) {
var result;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
result = this.responseText.split(",");
callback(result);
}
};
xhttp.open("POST","data.dat",true);
xhttp.send();
}
getData(function(result){
console.log(result);
});