为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 JavaScript 中未定义的 TypeError?对象的所有字段都存在

如何修复 JavaScript 中未定义的 TypeError?对象的所有字段都存在

BIG阳 2022-08-18 10:06:36
在下面的代码片段中,我从java Servlet接收一个JSON对象并访问该对象的属性。JSON 对象:{  "redirect": "/index.html",  "logout": "/_cloudshellProxy/_ah/logout?continue\u003d%2Findex.html",  "status": true,  "register": true,  "user": {    "email": "s@example.com",    "username": "Yevesky",    "college": {      "name": "Lafayette College",      "key": "aglzcHN0ZWFtMTlyFAsSB0NvbGxlZ2UYgICAgICAswgM"    },    "key": "aglzcHN0ZWFtMTlyEQsSBFVzZXIYgICAgICgxAgM"  }}以下是我如何处理来自 servlet 的对象。fetch("/getUserInfo").then(response => response.json()).then(object =>    {        jsonObject = object;        console.log(jsonObject);        setUpUserPage(jsonObject);        loadClasses();    });    function setUpUserPage(json){    const jsonData = json;    var name = document.createElement("h3");    name.innerText = String(jsonData.username);    var uni = document.createElement("h6");    uni.innerText = String(jsonData.college.name); // Error occurs here    var classification = document.createElement("h6");    console.log(jsonData.classes);        if (jsonData?.isProf)    {        classification.innerText = "Professor";    }    else    {        classification.innerText = "Student";    }    var email = document.createElement("h6");    email.innerText = String(jsonData.email);    var spacer = document.createElement("BR");    //change nickname link    var changeNicknameP = document.createElement("p");    changeNicknameP.innerText = "Change your nickname: ";    var anchor = document.createElement("A");    var link = document.createTextNode("here");    anchor.setAttribute("href", "#");    anchor.appendChild(link);    changeNicknameP.appendChild(anchor);}问题是我不明白为什么我会得到一个“TypeError:无法读取未定义的属性'名称'”,如果对象有这样的属性?它只是JavaScript还是我没有遵循一个过程。我每次都会在控制台上打印JSON对象,以查看该属性是否确实存在。
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

这是因为您可能犯了一个错误。“学院”是用户的属性,而不是你的jsonData。将你的行替换为:

uni.innerText = String(jsonData.user.college.name);

如果响应可以更改,请不要忘记检查对象的属性(例如,在某些情况下,用户或学院是选项属性)

PS:对不起,我无法发表评论,因为我对SO没有足够的观点。


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信