Javascript 如何在ajax中异步返回文本文件值?“同步已被弃用”

Javascript 如何在ajax中异步返回文本文件值?“同步已被弃用”,javascript,ajax,asynchronous,Javascript,Ajax,Asynchronous,我尝试使用ajax异步,但该值返回undefined。 请不要用Jquery function readTextFile(file){ if(window.XMLHttpRequest) { var rawFile = new XMLHttpRequest(); }else { var rawFile = new ActiveXObject("Microsoft.XMLHTTP"); } rawFile.open("GET", f

我尝试使用ajax异步,但该值返回undefined。 请不要用Jquery

function readTextFile(file){
    if(window.XMLHttpRequest) {
        var rawFile = new XMLHttpRequest();
    }else {
        var rawFile = new ActiveXObject("Microsoft.XMLHTTP");
    }

    rawFile.open("GET", file, false);
    rawFile.send(null);

    //alert(rawFile.responseText);
    var textvalue = rawFile.responseText;
    return textvalue;
}


var str = readTextFile(file);

请尝试此解决方案:

function readTextFile(file) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        var textvalue = xhttp.responseText;
    }
  };
  xhttp.open("GET", file, true);
  xhttp.send();
}
您需要使用onreadystatechange事件和回调:

function readTextFile(file, callback){
    if(window.XMLHttpRequest) {
        var rawFile = new XMLHttpRequest();
    }else {
        var rawFile = new ActiveXObject("Microsoft.XMLHTTP");
    }
    rawFile.onreadystatechange = function() {
        if (rawFilereadyState == 4 && rawFile.status === 200) {
           callback(rawFile.responseText);
        }
    }
    rawFile.open("GET", file, false);
    rawFile.send(null);
}


readTextFile(file, function(str) {
  // use the str
});

检查这个问题和答案:抱歉,但不是,它甚至返回textvalue@Danny您不能从异步调用返回值,您需要使用callback。@jcubic在没有jquery的情况下,如何使用上面的代码进行回调?我需要一个例子,我真的迷路了。上面的链接是由投我反对票的人提供的,但他没有意识到我说了否定J查询!我认为您必须使用callback谢谢jcubic,但是responseText如何返回以便我可以将其放入字符串中呢?:我使用哪个函数。抱歉,我不熟悉ajax中的回调函数,所有指南都涉及jquery。T^Tit与var str=readTextFilefile相同,但str作为参数在回调函数中,而不是在readTextFile之后,您将代码放在回调函数中,并使用str作为参数而不是变量。