我正在尝试在进行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
获取值
答案 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