如何从ajax解析json响应?

时间:2014-07-09 04:00:04

标签: ajax json

我是json和ajax的新手,这是我的第一个例子可以帮助我解决这个问题。

$.ajax({
    type: "GET",
     url: "ajs/index",
     dataType: "JSON",
     success: function(data) {          
     var obj = JSON.parse(data);
     $("#result").html(obj.name);
      }
   });

数据输出的格式为:

[Object {id=10, name="ss", title="ss", content="h", ...}, Object {id=12, name="lo", title="gi", content="c", ...}, Object {id=13, name="lo", title="gi", content="c", ...}, Object {id=14, name="lo", title="gi", content="c", ...}, Object {id=15, name="n", title="m", content="m", ...}]

obj的输出(解析后)的格式为:

[{"id":10,"name":"ss","title":"ss","content":"h","created_at":"2014-07-07T10:07:02.398Z","updated_at":"2014-07-07T10:07:02.398Z"}]{"id":12,"name":"lo","title":"gi","content":"c","created_at":"2014-07-08T05:26:05.816Z","updated_at":"2014-07-08T05:26:05.816Z"}

当我使用 obj.name 时,它不会显示任何数据,如何显示我的所有数据。

3 个答案:

答案 0 :(得分:1)

数据中的前导[表示数组:

[{"id":10,"name":"ss","title":"ss","content":"h","created_at":"2014-07-07T10:07:02.398Z","updated_at":"2014-07-07T10:07:02.398Z"},{"id":12,"name":"lo","title":"gi","content":"c","created_at":"2014-07-08T05:26:05.816Z","updated_at":"2014-07-08T05:26:05.816Z"}]

换句话说,obj是一个包含多个对象的数组。每个对象都有参数idnametitle等等。

因此,您想要访问obj[0].nameobj[1].name等,而不仅仅是obj.name

注意:您在问题中提供的解析后数据中存在拼写错误。它看起来应该是我上面的内容。如果您仍有问题,请在评论中告诉我。

答案 1 :(得分:0)

我会使用便捷方法

$.getJSON('/someurl',function(jsonReturnedFromServer){ });

您可能需要调试它以确保从服务器获取有效的json

答案 2 :(得分:0)

您可以做的一件事是使用Chrome开发人员工具在代码中设置断点,以获得响应并将其设置为变量。此时,Chrome有一个可用于查看对象和执行javascript的控制台。这种情况非常方便。

看起来数据会以列表形式返回,因此您可能希望执行此类操作。

for(var i = 0; i < data.length; i++) {
    var name = data[i].name;
    // you can manipulate the DOM here with the name
}