我正在使用JS&AJAX從 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 會顯示這個..
未捕獲的型別錯誤:無法在 XMLHttpRequest.xhr.onload (avian.php:784:61) 讀取未定義的屬性(讀取“共享”)
并指向這一行:
if (typeof (obj.body.primary.shares.shared) === 'undefined') {
我發現了很多應該有助于解決這個問題的東西(包括使用typeof,因為我最初只是使用<1或null作為我的條件檢查器,但這也不起作用。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以使用optional chaining檢查物件的屬性是否存在:
if(obj?.body?.primary?.shares?.shared) {
...
}
在這里查看更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449417.html
標籤:javascript 阿贾克斯 javascript 对象
上一篇:我如何獲得表格中的總分值?
