返回 AJAX responseText 作为字符串

Returning AJAX responseText as string

在我的代码中,我尝试使用 AJAX 获取模板文件的内容,并 return 将其作为字符串,我对此发出警告。这导致 undefined,但是如果我没有 return xmlhttp.responseText 而不是 alert(xmlhttp.responseText) 我得到了我想要的结果。

我可以return 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();
}

否:要执行您想要的操作,您需要在 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);

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();
}