5

我正在尝试创建具有以下功能的 JS 应用程序:获取 JSON 文档并显示该文本的按钮。我正在阅读 Elasticsearch 教程,在我提供的 url 上确实有有效的 JSON:

{"_index":"planet","_type":"hacker","_id":"xfSJlRT7RtWwdQDPwkIMWg","_version":1,"exists":true, "_source" : {"handle":"mark","hobbies":["rollerblading","hacking","coding"]}}

使用下面的代码时...我收到警报

[object Object]

而不是带有完整 JSON 的警报。我计划采取下一步实际选择部分 JSON 的步骤,但我想至少先看看完整的文档......

有任何想法吗?先感谢您!

<!DOCTYPE html>
<html lang="en">
<head><title>Demo</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>

<body>
  <input id="testbutton" type="button" value="Test" />
  <p id="results">results appended here: </p>

<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#testbutton").click(function() {
        $.ajax({
            url: 'http://localhost:9200/planet/hacker/xfSJlRT7RtWwdQDPwkIMWg',
            dataType: 'json',
            success: function(data) {
                $("#results").append('all good');
                alert(data);
            },
             error: function() {
                $("#results").append("error");
                alert('error');
            }
        });
    });
});
</script>
</body>
</html>
4

4 回答 4

17

采用alert(JSON.stringify(data));

于 2013-07-28T21:50:36.570 回答
2

jQuery 尝试“最好地猜测”它接收到的数据格式,并为您解析它。

这正是你所看到的。jQuery 已经为您将 JSON 解析为一个对象。要查看 JSON 表示,您可以再次对数据进行字符串化;

alert(JSON.stringify(data));

...或者,您可以告诉 jQuery 首先不要解析响应,dataType: "string"作为选项之一传递。data然后将是 JSON 表示,您必须JSON.parse(data)将其转换为对象。

于 2013-07-28T21:51:19.397 回答
0

您正在将 JSON 转换为 javascript 对象,您可以使用.操作符从该对象访问各个属性,例如

alert(data._type);
于 2013-07-28T21:52:02.073 回答
0

简单的!

alert()调用.toString()返回“[object Object]”的对象。

使用console.log(data),右键单击并转到控制台(或按 F12)。

或者像其他人一样做:alert(JSON.stringify(data));

于 2013-07-28T21:52:54.400 回答