Javascript Json属性只能在开发人员控制台中访问
感谢大家花时间阅读本文。我一直在拔头发,想弄明白为什么这不起作用 我试图获得一个JSON属性,但出于某种原因,它只能在开发人员控制台中工作Javascript Json属性只能在开发人员控制台中访问,javascript,html,Javascript,Html,感谢大家花时间阅读本文。我一直在拔头发,想弄明白为什么这不起作用 我试图获得一个JSON属性,但出于某种原因,它只能在开发人员控制台中工作 ID = 3039; oAuthToken = UStKiYs52uqHznMQNrbORyAAEcDH51kHF4; fetch(`https://us.api.blizzard.com/data/wow/item/${ID}?namespace=static-us&locale=en_US&access_token=${oAuthToke
ID = 3039; oAuthToken = UStKiYs52uqHznMQNrbORyAAEcDH51kHF4;
fetch(`https://us.api.blizzard.com/data/wow/item/${ID}?namespace=static-us&locale=en_US&access_token=${oAuthToken}`)
.then(response => response.json())
.then(data => responseFromFetch = data)
.then(newData => console.log(newData.preview_item.stats[0].display.display_string))
正如预期的那样,这将返回我正在寻找的属性“+16敏捷性”
但是,当我尝试在以下上下文中访问此属性时,它给了我一个错误:“无法读取未定义的属性“0”
依赖关系是否有问题
这很奇怪的一个原因是,我在第15行使用的路径是从控制台中的json响应得到的,我右键单击它以获得属性路径
如果有帮助的话,我附带了一个JSON响应的屏幕截图
这可能是用户错误,例如误读了记录在哪里的行。您显示的输出不包括表或statsArray日志。或者,您可能已经在chrome调试器中过滤掉了错误日志记录。如果一个键存在于一个地方,它不会在另一个地方神奇地消失,除非有人修改了对象,这是没有人修改过的。谢谢你,安迪,但是我已经进行了双重检查,我从开发人员控制台复制粘贴了对象路径,这两个代码段中的路径都是相同的。必须有其他事情发生:(您应该在
常量行之前记录用户
的内容,并在那里进行检查
function getToolTipID() {
let ID;
let ID2;
ID = (event.currentTarget.children[5].innerText.replace("ID: ", ""));
ID2 = (event.currentTarget);
console.log(ID);
fetch(`https://us.api.blizzard.com/data/wow/item/${ID}?namespace=static-us&locale=en_US&access_token=${oAuthToken}`)
.then(response => response.json())
.then((user) => {
console.log(user.inventory_type);
let lineContent;
let statsArray;
try {
statsArray = user.preview_item.stats[0].display.display_string
console.log(statsArray)
} catch (error) {
console.log(error)
}
console.table(statsArray)
const lines = [
`${user.name}`,
`${user.preview_item.level.value}`,
/* `${user.preview_item.binding.name}`, */
`${user.inventory_type.name}`,
`${user.item_subclass.name}`,
`${user.preview_item.weapon.damage.display_string}`,
`${user.preview_item.weapon.attack_speed.display_string}`,
`${user.preview_item.weapon.dps.display_string}`,
/* ACCESSING VALUE HERE */ `${user.preview_item.stats[0].display.display_string}`, */
`${user.preview_item.durability.display_string}`,
`${user.required_level}`,
`${user.sell_price}`
]
lineContent = user.inventory_type.name;
let node = document.createElement('tr');
node.innerHTML = lines;
document.getElementById("toolTipDisplay").appendChild(node);
});
}