请参阅下面的代码。发送请求并返回OK后,在reqListener()
函数中,我获取了文本文件输出的内容。
但是,当我稍后尝试返回响应变量时,它仍然未定义,就好像尚未调用reqListener()
一样。这可能是由async=true
参数引起的吗?
此外,如果请求成功,是否有更简洁的方法可以从函数中获取响应文本,例如使用闭包?
function load_text_file()
{
function reqListener() {
if (this.readyState == 4 && this.status == 200)
{
response = this.responseText;
console.log(response);
}
}
var response;
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = reqListener;
oReq.open("get", "file.txt", true);
oReq.send();
return response;
}
var TEXT = load_text_file();
console.log(TEXT);
答案 0 :(得分:1)
请求需要一段时间才能完成。你最好交出一个在文件加载时触发的回调:
function load_text_file(callback)
{
function reqListener() {
if (this.readyState == 4 && this.status == 200)
{
console.log(response);
callback(this.responseText);
}
}
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = reqListener;
oReq.open("get", "file.txt", true);
oReq.send();
}
load_text_file(function(){
console.log(TEXT);
});