我正在使用JS
&CCD_ 2以从Web-API(用于密码管理池(收集信息。几乎所有这些都能完美地工作,但对于服务器,按照开发人员设置的方式,当不使用某个值时,它可能是empty
,而不是0
。其他人确实有占位符值(我正在和开发人员讨论给所有东西一个占位符,但在此之前,我需要一些帮助(。
例如:
{"version":"0.0.3","statusCode":200,"headers":{"Access-Control-Allow-Headers":"Content-Type, Access-Control-Allow-Headers, Access-Control-Allow-Origin, Access-Control-Allow-Methods","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET","Content-Type":"application/json"},"body":{"primary":{"hashrate":{"shared":0,"solo":0},"payments":{"balances":0,"generate":0,"immature":0,"paid":0},"shares":{"shared":{},"solo":{}},"times":{"shared":0},"work":{"shared":0,"solo":0},"workers":{"shared":[],"solo":[]}},"auxiliary":{"hashrate":{"shared":0,"solo":0},"payments":{"balances":0,"generate":0,"immature":0,"paid":0},"shares":{"shared":{},"solo":{}},"times":{"shared":0},"work":{"shared":0,"solo":0},"workers":{"shared":[],"solo":[]}}}}
您可以看到,在body.primary.shares.shared下,它只是[]
,而不是零值。
以下是脚本的一部分:
function avianDashboard(api, workerAPI) {
const xhr = new XMLHttpRequest();
xhr.open("GET", api, true);
xhr.onload = function () {
if (this.status === 200) {
obj = JSON.parse(this.responseText);
if (typeof (obj.body.primary.shares.shared) === 'undefined') {
document.getElementById('minerShares').innerHTML = 0;
} else {
document.getElementById('minerShares').innerHTML = obj.body.primary.shares.shared.valid;
}
//Rest of the function works properly so I've omitted it for the sake of sanity
当我运行页面时,console.log显示如下。。
未捕获类型错误:无法读取未定义的属性(读取"shared"(在XMLHttpRequest.xhr.onload(avian.php:784:61(
并指向这条线:
if(typeof(obj.body.primary.shares.shared(==="未定义"({
我发现了很多应该有助于解决这个问题的东西(包括使用typeof
,因为我最初只是使用<1
或null
作为条件检查器,但这也不起作用
如有任何帮助,我们将不胜感激。
您可以使用optional chaining
检查对象的属性是否存在:
if(obj?.body?.primary?.shares?.shared) {
...
}
点击此处查看更多信息。