【问题标题】:Json returns as undefined, replace undefined with text [duplicate]Json返回未定义,用文本替换未定义[重复]
【发布时间】:2018-06-12 23:08:50
【问题描述】:

第一次处理json,所以不太确定.. 当用户在线时,api返回

user example
live    true
viewers 22
passwordProtected   false
banned  false

但是当我离线时,“观众”会被删除。 所以 data.viewers 以未定义的形式返回,我该如何将其更改为例如离线?

脚本:

<script>
$.getJSON('https://example.com/api/example', function(data) {

    var text = `${data.viewers}`


    $(".mypanel").html(text);
});

</script> 

【问题讨论】:

  • data.viewers || "offline"?

标签: javascript json


【解决方案1】:

您可以使用hasOwnProperty 函数。

var text = "offline";
if(data.hasOwnProperty('viewers'){
  text = data.viewers;
}

【讨论】:

    【解决方案2】:

    你可以像这样检查未定义:

    var text = "offline";
    if (data.length && data.viewers !== undefined) {
        var text = data.viewers;
    }
    

    或使用三元运算符:

    var text = (data.viewers !== undefined) ? data.viewers : "offline";
    

    附言。保存变量时不需要插值。即`${data.viewers}` 这用于将变量添加到像 html 这样的字符串值。

    【讨论】:

    • 模板文字可能仍然有用。它会导致data.viewers 被强制转换为字符串并将其分配给text。如果textfalse$(".mypanel").html(text); 将导致$(".mypanel") 为空。字符串可以正常工作。
    • 以这种方式将数据强制转换为字符串很有用。感谢您的提示,但我不确定将false 作为字符串发送到浏览器通常是这里想要的。无论哪种方式,您上面评论中的|| 声明都是最干净的。
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2020-06-16
    • 2012-12-04
    • 2016-09-20
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多