为什么JavaScript返回[object Object]?

3
<script type="text/javascript">
  $("#sign_up").on('click', function() {
    $.post('./includes/ajax.php', { action: 'register' } , function(result) {
      var result = JSON.parse(result);
        if(result ) { $("#register_result") = result; document.write(result); }
    });
  });
$("#register_form").submit(function() {
  return false;
});
</script>

在控制台中,它返回 "必须输入所有内容" - 这正是我想要的结果。然而,警告框返回 [object Object]。为什么会这样?

5
不要使用alert()进行调试在JavaScript中,调试是一项非常重要的任务。当您需要解决代码问题时,您可以使用许多不同的工具来查找问题所在。然而,有些人可能会倾向于使用alert()函数来显示变量和其他信息。尽管这种方法确实可以提供一些反馈,但它并不是最佳选择。实际上,使用alert()可能会使你的代码更加难以调试和维护。相反,您应该使用浏览器开发人员工具(如Chrome DevTools)中提供的调试功能。这些工具提供了许多有用的功能,例如单步执行、断点、监视等等,使您能够更有效地调试代码。因此,不要使用alert()进行调试,而是学习如何使用浏览器开发人员工具来提高代码质量并减少错误。 - JJJ
2个回答

10

console.log将为您提供一个对象的调试视图。

alert将为您提供一个对象的字符串视图。

通过调用.toString()将对象转换为字符串。

基本对象上的默认toString()函数将返回"[Object object]"


我编辑了原始问题,请查看我在Ancarius答案下的评论。 - John Smith

1

首先,看起来你正在尝试获取JSON数据。如果是这种情况,为什么不直接将dataType($.post函数中的第四个参数)设置为'json'呢?

此外,JSON是一个对象,而alert并不适合返回对象。如果你想调试代码,我建议使用console.log(result)。它更具信息性,也不会干扰用户。


它已经在控制台中记录了,我希望它能显示给用户。我将更改alert(); 我编辑了原始问题,如何让它写入#register_result,以便用户可以看到它说“必须输入所有输入”? - John Smith
@JohnSmith document.write()alert() 一样存在 Quentin 所描述的“问题”。你需要将对象打印到控制台中,以便查看哪个元素包含你想要打印的消息,并打印该元素(例如,如果消息恰好在 msg 元素中,则使用 document.write(result.msg))。 - JJJ
@JohnSmith 既然你选择了 jQuery,你可以使用这里描述的<code>$('#register_result').html(result.msg);</code> jQuery API .html()。虽然 AJAX 响应返回的内容是一个对象,但最终元素应该是可解析的文本。 - NullDivision

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接