【发布时间】:2017-03-12 22:26:02
【问题描述】:
您好,我一直在努力解决从 XMLHttpRequest 函数返回数据的问题。我尝试了许多不同的方法,但是当我尝试从函数外部将数据输出到控制台时,我唯一能得到的就是我总是得到“未定义”。它只有在我从函数本身内部执行时才有效。
<script>
var object;
function loadJSON(path, success, error) {
var xhr = new XMLHttpRequest();
var obj1;
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
if (success)
success(JSON.parse(xhr.responseText));
//console.log(data); works here!
} else {
if (error)
error(xhr);
}
}
};
xhr.open("GET", path, true);
xhr.send();
}
object = loadJSON('jconfig.json',
function (data) { console.log(data); return($data);/*works here! but does not return!*/ },
function (xhr) { console.error(xhr); }
);
console.log(object);//does not work here
</script>
我知道这是一个非常简单的问题,但我已经被这个问题困扰了一个多小时,而且其他类似问题的答案似乎无法让我克服这个障碍。非常感谢任何帮助!
编辑:我用一些建议更新了代码,但我仍然无法让 ti 工作。任何建议让上面的代码最终返回我可以在函数之外使用的东西。
【问题讨论】:
-
XHR 是异步的。
-
我上面的先生说了什么。您的选择是将成功/错误回调传递给
loadJSON或将本机 XHR 包装在本机/库 Promise 中。 -
我尝试添加回调,但我似乎仍然无法弄清楚如何返回值。
标签: javascript json xmlhttprequest return