gpt4 book ai didi

javascript - XMLHttpRequest 返回未定义的响应,但适用于 console.log

转载 作者:行者123 更新时间:2023-12-02 23:34:11 26 4
gpt4 key购买 nike

我正在尝试读取本地 myjson.json 文件并将其内容打印到我的index.html。我正在使用以下 JavaScript 代码:

function getJSON() {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/myfolder/myjson.json', false);
xhr.onreadystatechange = function () {
if (xhr.readyState == XMLHttpRequest.DONE) {
var response = xhr.responseText;
console.log("response: " + response); //Correctly prints JSON content to console
return response; //response is undefined when called from html
}
}
xhr.send(null);
}

我像这样调用函数 getJSON() :

document.getElementById("contentOfJSON").innerHTML += "JSON: "+getJSON();

这会将 myjson.json 的内容正确打印到 console.log,但我的 HTML 元素“contentOfJSON”仅包含“JSON:未定义”。尽管 console.log 正在工作,为什么我仍收到未定义的响应?

最佳答案

您将字符串返回给 onreadystatechange 的调用。

您的函数 getJSON 不返回任何内容。

据我所知,同步应该被贬值,因此只需将成功函数传递到 getJSON 中,然后通过将结果字符串传递到回调中来调用它即可使其异步。

function getJSON(mycallback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/myfolder/myjson.json', false);
xhr.onreadystatechange = function () {
if (xhr.readyState == XMLHttpRequest.DONE) {
var response = xhr.responseText;
console.log("response: " + response); //Correctly prints JSON content to console

// call it here
mycallback(response);
}
}
xhr.send(null);
}


getJSON(function(result)
{
document.getElementById("contentOfJSON").innerHTML += "JSON: " + result;
});

关于javascript - XMLHttpRequest 返回未定义的响应,但适用于 console.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56351986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com