Javascript console.log/是否从阵列中选择单个键?

Javascript console.log/是否从阵列中选择单个键?,javascript,html,json,ajax,django-rest-framework,Javascript,Html,Json,Ajax,Django Rest Framework,我建立了一个django REST框架API,它连接到一个带有随机数据的django模型。我能够在按下按钮后将JSON格式的API数据加载到HTML框中。我称之为JSON数据查找器 <div class="container-fluid"> <script> document.addEventListener('DOMContentLoaded', function () { document.getElementById('getJSONdat

我建立了一个django REST框架API,它连接到一个带有随机数据的django模型。我能够在按下按钮后将JSON格式的API数据加载到HTML框中。我称之为JSON数据查找器

<div class="container-fluid">

<script>
    document.addEventListener('DOMContentLoaded', function () {
        document.getElementById('getJSONdataTest').onclick = function () {
            req = new XMLHttpRequest();
            req.open("GET", 'http://127.0.0.1:8000/cars/', true);
            req.send();
            req.onload = function () {
                json = JSON.parse(req.responseText);
                document.getElementsByClassName('data box')[0].innerHTML = JSON.stringify(json);
                console.log(json);
                // Print
            };
        };
    });
</script>
<style>

    body {
        text-align: center;
        font-family: "Helvetica", sans-serif;
    }

    h1 {
        font-size: 2em;
        font-weight: bold;
    }

    .box {
        border-radius: 5px;
        background-color: #eee;
        padding: 20px 5px;
    }

    button {
        color: white;
        background-color: #4791d0;
        border-radius: 5px;
        border: 1px solid #4791d0;
        padding: 5px 10px 8px 10px;
    }

        button:hover {
            background-color: #0F5897;
            border: 1px solid #0F5897;
        }
</style>
<h1>JSON Data Finder</h1>
<p class="data box">
    The Data will go here
</p>
<p>
    <button id="getJSONdataTest">
        Get Data
    </button>
</p>
所以输出应该显示对象3的名称

奥迪

-------------------------------

不幸的是,什么也没有发生,控制台显示了一个错误

未捕获的TypeError:无法读取未定义的属性“name” 在XMLHttpRequest.req.onload((索引):111)

我猜JavaScript无法解释我的输出,因为数组不是“干净的”?因此

{“count”:4,“next”:null,“previous”:null

在我的成绩面前

“结果”:[{“id”:3,“名称”:“奥迪”,“价格”:11},{“id”:2,“名称”:“梅赛德斯”,“价格”:22},{“id”:1,“名称”:“宝马”,“价格”:99},{“id”:4,“名称”:“特拉班特”,“价格”:113}]

javaScript无法解释我的输出,因为数组不是“干净的”

您的
json
对象不是不干净的数组;它根本不是数组。它是一个JS对象()

一旦阅读了JS对象,错误就会变得很明显。但总而言之,
json
既不是数组,也没有名为
2
的字段。因此
json[2]
返回undefined,而
undefined.name
抛出错误


要获得
Audi
,您需要
json.results[0]。name

在我看来,您需要json.results[2].name,该数组中的名称将返回“BMW”,因为它是数组中第三个元素中的名称。如果您正在查找id为3的结果,则需要在结果数组中搜索该id。
json.results[0]。name
应该会给您一个提示,错误很可能是因为您在控制台记录时,它会进入
“next”:null,
,然后尝试查找
name
。它不存在,因为它不是一个对象。谢谢。所以它是一个JS对象,因为它在
{}
中。正确。另一方面,数组被包装在
[]
console.log(json[2].name);