Javascript console.log/是否从阵列中选择单个键?
我建立了一个django REST框架API,它连接到一个带有随机数据的django模型。我能够在按下按钮后将JSON格式的API数据加载到HTML框中。我称之为JSON数据查找器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
<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);