AJAX响应未分配给变量

时间:2018-12-24 14:16:29

标签: javascript ajax

我正在使用此代码来获取 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"]。我在做什么错了?

1 个答案:

答案 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);
});