javascript - 如何从此数组中获取某些对象的值?
问题描述
我想获得“城市”和“国家”的价值。
这是我的 HTML 和 javascript 代码。
我试过了:
- 结果.city
- results["city"] 但它们似乎不起作用;给我未定义的价值。
<pre id="json-result"></pre>
<p><span id="city"></span></p>
<p><span id="country"></span></p>
<script>
var result = document.getElementById("json-result");
const Http = new XMLHttpRequest();
window.addEventListener("load", function () {
console.log("getLocation Called");
var bdcApi = "https://api.bigdatacloud.net/data/reverse-geocode-client"
navigator.geolocation.getCurrentPosition(
(position) => {
bdcApi = bdcApi +
"?latitude=" + position.coords.latitude +
"&longitude=" + position.coords.longitude +
"&localityLanguage=en";
getApi(bdcApi);
},
(err) => {
getApi(bdcApi);
}, {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
});
})
function getApi(bdcApi) {
Http.open("GET", bdcApi);
Http.send();
Http.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
result.innerHTML = this.responseText;
var results = this.responseText
document.getElementById("city").innerHTML = results.city
}
};
}
</script>
解决方案
在尝试访问其成员之前,您需要将 API 的文本响应转换为实际的 Javascript 对象。您可以通过使用将 JSON 文本转换为 Javascript 对象JSON.parse()
。
试试这个:
const results = JSON.parse(this.responseText);
(附带说明,如果您不需要支持 Internet Explorer,最好使用更新且更易于使用的fetch
而不是XMLHttpRequest
.)
推荐阅读
- typescript - TypeError:无法读取未定义的属性“实例”
- python - 代码运行器图标未显示在 Visual Studio 代码中
- javascript - 如何将 uuid 值传递给使用 JavaScript 动态添加的表单的所有输入字段?
- css - Bootstrap 插件破坏了我的 CSS
- c++ - Xcode 总是重建
- java - 使用 EmailConnector (Wso2 Integration Studio) 检索的二进制附件出现问题
- html - 当我将嵌入式 CSS 转换为内联 CSS 时,媒体查询不会覆盖其类
- extjs - Ext js 7 现代折叠/调整面板
- html - 文本对齐:中心不会应用于图像后的链接
- powershell - 按计算机名/用户名过滤文件“yyyy-MM-dd_HH-mm-ss_Computername_Username_File.json”