javascript - Javascript / Json 请求对象返回 null
问题描述
我正在尝试使用 JS 访问本地 JSON 文件,通过解析将其转换为 JS 对象并将其记录到控制台。我在 VS Code 中使用 Live Server 来设置服务器,因此是 localhost URL。
var requestURL = "http://localhost:5500/sqVol.json";
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
var jsonObj = request.response;
request.onload = function () {
JSON.parse(jsonObj);
logData(jsonObj);
};
function logData(jsonObj){
console.log("jsonObj= " + jsonObj);
//console.log("jsonObj[Datum]= " + jsonObj[Datum]);
//console.log("jsonObj.Datum= " + jsonObj.Datum);
}
输出:jsonObj=null
JSON 文件:
{
"Datum": ["03.05.2017","05.06.2017"],
"Volume": [1338,1445]
}
这就是我想象的情况:我从localhost获取答案并通过JSON.parse将其解析为 JS 对象。一旦请求完成,我就会调用我的logData函数并传递解析的数据来记录它。
解决方案
正如@connexo 指出的那样,我不理解调用的异步性质。坦率地说,我仍然没有,但我想一个好的起点是:
正如@Mani Kumar Reddy Kancharla 指出的那样,自从我声明以来,我的响应已经是一个 JS 对象request.responseType = 'json';
这是它现在的样子:
var requestURL = "http://localhost:5500/sqVol.json";
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();
request.onload = function () {
console.log(request.response);
var jsonObj = request.response;
logData(jsonObj);
};
function logData(jsonObj){
console.log("jsonObj= " + jsonObj);
console.log("jsonObj[Datum]= " + jsonObj.Datum);
输出:{…} 基准:数组[“03.05.2017”,“05.06.2017”]体积:数组[1338, 1445]</p>
jsonObj= [对象对象]
jsonObj[基准]= 03.05.2017,05.06.2017
如您所见,我还可以访问.Datum属性。我认为它解决了。谢谢!
编辑:添加了 connexo 提供的链接。
推荐阅读
- c - socketpair() 可以用来代替 pipe2() 并且应该在所有内核版本中都受支持?
- django - 使用 Django 简单历史创建历史记录的问题
- javascript - 如何使用 jquery .each() 遍历解析的 JSON 数组
- c# - Unity 2D:碰撞触发器
- sas - SAS 中的年度条件总和
- c# - Visual Studio 2017 错误更新 OData 服务参考
- c# - 使用 LINQ 创建简单的 SQL 数据库
- java - 片段数据传输中的片段
- javascript - 获取 object.properties 并将其随机放置在 dom element.Vanila Js 中
- react-native - 找不到模块“尽快/原始”