将AJAX responseText作为字符串返回

时间:2018-03-22 01:49:54

标签: ajax responsetext

在我的代码中,我尝试使用AJAX来获取模板文件的内容并将其作为字符串返回,我发出提醒。结果为undefined,但如果我return xmlhttp.responseText代替alert(xmlhttp.responseText),我会得到我想要的结果。

我可以将AJAX内容作为函数外的字符串返回吗?

alert(getFile());

function getFile() {

  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function stateChanged() {
    if (xmlhttp.readyState == 4)
      return xmlhttp.responseText;
  }

  xmlhttp.open("POST","/template.html", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send();
}

2 个答案:

答案 0 :(得分:1)

否:要做你想做的事,你需要接受getFile函数中的回调并调用它:

function getFile(callback) {

  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function stateChanged() {
    if (xmlhttp.readyState == 4)
      callback(xmlhttp.responseText);
  }

  xmlhttp.open("POST","/template.html", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send();
}

getFile(alert);

答案 1 :(得分:1)

XMLHttpRequest是异步的。您应该使用如下所示的回调

getFile(alert);

function getFile(callback) {

  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function stateChanged() {
    if (xmlhttp.readyState == 4)
      callback(xmlhttp.responseText);
  }

  xmlhttp.open("POST","/template.html", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send();
}