【问题标题】:loop through each JSON response returns "[Object Object]"遍历每个 JSON 响应返回“[Object Object]”
【发布时间】:2015-11-08 19:10:47
【问题描述】:

我有这个关于成功的 AJAX 函数

success: function(response){
    console.log(response);
    if(response.success){
        $.each(response.vote, function(index, value){
            alert(value);
        });
    }   
}

这是来自控制台的 JSON 响应(请参阅下图)

但它从警报提示中抛出“[Object Object]”,有什么想法、线索、帮助、建议、建议吗?

【问题讨论】:

  • 每个value 都是一个object,alert 会将它变成一个字符串,这意味着 .toString 的值,所以你得到[Object Object]。你可以试试alert({}),它会给你同样的结果。如果您只想查看该键值对,可以再次将其设为 jsonalert(JSON.stringify(value)),但如果您只想访问它的值,请使用 value.branch... 等等。
  • 那么任何想法如何在警报提示中将其呈现为字符串?就像我要显示分支一样,我得到每个分支。
  • alert 将对象转换为字符串,GrandParent Object 类上的 toString 方法是使用原型链调用的,因此它会提醒 [object Object]。使用console.log
  • Here's my answer 尝试提醒对象的相关问题。

标签: javascript jquery json ajax


【解决方案1】:

不要使用alert,而是使用console.log。您将能够以这种方式查看所有对象并避免收到垃圾邮件。

另外,如果您需要查看深层对象,您可以使用 https://github.com/WebReflection/circular-json 之类的东西,它甚至可以打印引用自身的对象(循环引用将无法打印大对象)。

【讨论】:

  • 那么任何想法如何在警报提示中将其呈现为字符串?就像我要显示分支一样,我得到每个分支。
  • 正如@kishan 所写,您可以使用alert(JSON.stringify(value)),但如果对象具有循环引用,这将失败,但试一试,对于简单对象来说完全没问题。
【解决方案2】:

alert 使用对象的toString 方法,它将返回这个 [Object Object] 事物。如果你想很好地打印一个对象,你可以使用JSON.stringify(yourObject)

【讨论】:

    【解决方案3】:

    在您当前的代码中,value 是一个对象,但是,alert 只能显示string,因此它将使用.toString 将您的value 转换为字符串,然后变为"[Object Object]" .

    要将value 显示为键值对,请使用JSON.stringify(value) 再次使其成为json

    success: function(response){
        console.log(response);
        if(response.success){
            $.each(response.vote, function(index, value){
                alert(JSON.stringify(value));
            });
        }   
    }
    

    如果你只想访问值的属性,使用它们的键应该可以工作:

    success: function(response){
        console.log(response);
        if(response.success){
            $.each(response.vote, function(index, value){
                // This will alert each items' `bundle` value.
                // It's enough in your case, but you may have to check if the target attribute you want to alert is also an object.
                alert(value.bundle);
            });
        }   
    }
    

    【讨论】:

      【解决方案4】:

      如果您想提醒该值而不是使用 alert(JSON.stringify(value))

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多