2015-11-08 166 views
1

我有这个成功AJAX功能循环通过每个JSON响应返回“[对象对象]”

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

,这从控制台JSON响应(参考下面的图像)

JSON response from the console

但它从警报提示中引发我“[Object Object]”,任何想法,线索,帮助,建议和建议?

+0

每一个'value'都是一个'object',alert会使它成为一个字符串,这会在值上隐藏一个.toString,所以你得到'[Object Object]'。你可以尝试'alert({})',这会给你相同的结果。如果你只是想看到这些键值对,你可以再次使用'json',alert(JSON.stringify(value))',但是如果你只想访问它的值,可以使用'value.branch' ...等等。 – fuyushimoya

+0

所以任何想法如何在警报提示中呈现它像一个字符串?就像我要去显示分支一样,我得到每个分支。 –

+0

'alert'将对象转换为字符串,''GrandParent'Object'类中的'toString'方法使用原型链调用,因此它警告'[object Object]'。使用'console.log'。 – Tushar

回答

2

在你当前的代码,该value是一个对象,但是,警报只能显示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); 
     }); 
    } 
} 
3

请勿使用alert,而应使用console.log。您将能够以这种方式查看所有对象并避免垃圾邮件。另外,如果您需要查看较深的对象,则可以使用类似https://github.com/WebReflection/circular-json的东西,这些对象甚至可以打印引用自身的对象(循环引用将无法打印大对象)。

+0

所以任何想法如何在警报提示中呈现它像一个字符串?就像我要去显示分支一样,我得到每个分支。 –

+0

@kishan写道,你可以使用'alert(JSON.stringify(value))',但是如果对象有循环引用就会失败,但只要试一下,对于简单对象来说就完全没问题。 – Vadorequest

3

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

1

如果你想提醒不是使用警报(JSON.stringify(值))该值。