我正在学习AJAX的基础知识,并且我试图将调用的结果存储在变量中。我有一个带有此对象的data.txt文件:
[
{ "id": "5688","name": " Jorge Luis Borges"},
{ "id": "5799","name": " Lewis Carroll"}
]
我打电话给它:
var object = "No object";
function requestFunction(url){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.addEventListener("load", function() {
object = this.response;
});
request.send(null);
return object;
};
console.log(requestFunction("data.txt"));
我不知道为什么,但result = this.response
不会影响我想要存储结果的变量,控制台会输出其原始值:No object
。
知道为什么吗?
编辑:我一直在How do I return the response from an asynchronous call?阅读幻想响应,我更新了函数以包含一个回调,当被调用时,输出结果:function requestFunction(url){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.addEventListener("load", function() {
outputFunction(this.response); // The callback
});
request.send(null);
};
// This is the callback
function outputFunction(a){
console.log(a);
};
requestFunction("data.txt");
有效。现在,在回调中,我想将结果存储在变量中,并在函数外部使用它。类似的东西:
// This is the callback
var storedObject = "Empty";
function outputFunction(a){
storedObject = a;
return storedObject;
};
但同样,它不起作用。 ¿是因为与上一个代码相同的原因吗?
答案 0 :(得分:0)
request.addEventListener("load", function() {
object = this.response;
});
以异步方式调用
object = this.response;
稍后会更新,您的代码
console.log(requestFunction("data.txt"));
不等待它完成更新,因此打印出原始值