在 JSON 调用中获取 UNDEFINED

Posted

技术标签:

【中文标题】在 JSON 调用中获取 UNDEFINED【英文标题】:Getting an UNDEFINED on a JSON call 【发布时间】:2022-01-04 18:05:03 【问题描述】:

在 [ajax/json 教程] 期间,我只有一个错误。我一直按照教程进行操作,但是在输出“名称”的对象值时,我的输出一直得到“未定义”。我可以让它输出“Rick”的唯一方法是使用 console.log(user[0].name) 而不是教程中的“console.log(user.name)”。 var 用户是 JSON.parse,按照说明。

JSON 文件(user.json):

[
    
        "id": 1,
        "name": "Rick",
        "email": "rick@mail.com"
    
]

html 文件 (ajax2.html):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Ajax 2 - Local JSON</title>
    <style>
        *, html  background: #333; color: #eee; 
    </style>
</head>
<body>
    <button id="button1">Get User</button>
    <button id="button2">Get Users</button>
    <br /><br />
    <h1><div id="user"></div></h1>
    <br />
    <h2><div id="users"></div></h2>

    <script>
        function loadUser() 
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'user.json', true);

            xhr.onload = function() 
                if(this.status == 200) 
                    var user = JSON.parse(this.responseText);
                    console.log(user.name); // Output name "Rick"
                
            

            xhr.send();
        

        document.getElementById('button1').addEventListener('click', loadUser);


    </script>

</body>
</html>

我不断收到未定义的消息。但是编码:

if(this.status == 200) 
    console.log(this.responseText); // Output the object key/values

会正确输出对象。

关于为什么我会得到一个未定义的任何想法?我正在使用 XAMPP,我的 Chrome 浏览器也是最新的。

如果我需要添加任何信息,请告诉我。我一直在寻找可能的答案,但这只是把我带入了一个兔子洞。

【问题讨论】:

“而不是教程的内容” - 那么你的教程是错误的。 user 是一个数组。 我的错误。我的意思是数组,而不是对象。尽管如此,我的问题仍然是为什么它适用于视频教程而不是我。我也感谢您解释其中的区别。 【参考方案1】:

您应该从 user.json 文件中删除括号。


    "id": 1,
    "name": "Rick",
    "email": "rick@mail.com"

【讨论】:

谢谢!就是这样。我忽略了 user.json 文件中的括号。跳进兔子洞试图自己研究它,我的眼睛纵横交错。

以上是关于在 JSON 调用中获取 UNDEFINED的主要内容,如果未能解决你的问题,请参考以下文章

在 Ionic 项目中获取并显示后端 json 数据作为下拉列表

AJAX 成功调用仅从 JSON 字符串中获取一个值

如何从 GraphQL API 调用中获取 JSON 对象元素? [关闭]

如何从MVC5中的jquery ajax调用中获取部分视图和JSON数据?

在对 WebMethod 的 jQuery AJAX 调用中获取空响应,但 Web 方法返回 JSON

获取 JSON 数据的调用,然后循环查找数据点的总值