无法从json对象获取值

时间:2014-04-19 13:23:31

标签: javascript ajax json

我正在尝试在进行ajax调用后从json对象获取值。不知道我做错了什么似乎很直接,但无法获得数据

回来的数据看起来像这样

{"data":"[{\"Id\":3,\"Name\":\"D\\u0027Costa\"}]"}

代码,删除了一些代码

.ajax({

     type: 'POST',
     url: "http://localhost:1448/RegisterDetails/",
     dataType: 'json',
     data: { "HomeID": self.Id, "Name": $("#txtFamilyName").val()},
       success: function (result) {
       console.log(result.data);  //<== the data show here like above
       alert(result.data.Id);  //<==nothing show
     },
     error: function (xhr, ajaxOptions, thrownError) {

     }
   });

我在Chrome控制台中尝试过这样的

obj2 = {}
Object {}
obj2 = {"data":"[{\"Id\":3,\"Name\":\"D\\u0027Costa\"}]"}
Object {data: "[{"Id":3,"Name":"D\u0027Costa"}]"}
obj2.data
"[{"Id":3,"Name":"D\u0027Costa"}]"
obj2.data.Id
undefined
obj2.Id
undefined

更新

这里建议解决问题的一行是

var retValue = JSON.parse(result.data)[0]

现在我可以使用

retValue.Name

获取值

3 个答案:

答案 0 :(得分:1)

实际上,看看这个,我最好的猜测是你错过了JSON.parse()

.ajax({
    type: 'POST',
    url: "http://localhost:1448/RegisterDetails/",
    dataType: 'json',
    data: { "HomeID": self.Id, "Name": $("#txtFamilyName").val()},
    success: function (result) {

        var javascriptObject = JSON.parse(result);

        console.log(javascriptObject );  //<== the data show here like above
        alert(javascriptObject.Id);  //<==nothing show
    },
    error: function (xhr, ajaxOptions, thrownError) {

    }
});

我还发现做这样的ajax次请求更好:

var result = $.ajax({
    url: "someUrl",
    data: { some: "data" },
    method: "POST/GET"
});

result.done(function (data, result) {
    if (result == "success") { // ajax success
        var data = JSON.parse(data);

        //do something here
    }
});

为了清楚起见,它看起来更好,同时复制和粘贴到不同的功能也更好。

答案 1 :(得分:1)

id属性位于data- 数组的第一个元素中。因此,alert(result.data[0].Id)应该给出所需的结果。仅供记录:没有'JSON-object'这样的东西。您可以将JSON(JavaScript Object Notation) string 解析为Javascript对象,[解析]据说由.ajax方法处理。

答案 2 :(得分:0)

数据字段只是一个字符串,您应该将其解析为具有JSON.parse(result.data)的JSON对象,因为数据现在是一个数组,您需要使用索引[0]来访问物体。知道你将能够获得Id财产。

JSON.parse(result.data)[0].Id