$ .getJSON返回“undefined”或[object Object] [object Object]

时间:2013-03-07 08:02:45

标签: jquery ajax json httphandler getjson

我知道有些人提出同样的问题并得到答复。我已经看了所有这些,但我无法解决我的问题。我有一个jquery snipet,它将值发送给处理程序,处理程序处理来自JS的值并将数据作为JSON数据返回。 JSON数据有两组记录(来自数据库的两行),需要通过getJSON捕获并处理它。 JSON数据看起来像

[{"Name":"P1","Description":"pd1",Value":"S1Test1"},{"Name":"P1","Description":"pd1","Value":"L1Test1"}]

我的JS是

$(document).ready(function () {
    $.getJSON('ProfileHandler.ashx', { 'ProfileName': 'P1' }, function (data) {
        alert(data.Name);
    });
});

我的处理程序代码是

string ProfileName = context.Request["ProfileName"];
GetProfileDataService GetProfileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
IEnumerable<ProfileData> ProfileDetails = GetProfileDataService.GetList(new ProfileSearchCriteria { Name = ProfileName });
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string serProfileDetails = javaScriptSerializer.Serialize(ProfileDetails);
context.Response.ContentType = "text/json";
context.Response.Write(serProfileDetails);

这里的接近错误是什么?

2 个答案:

答案 0 :(得分:7)

data是一个对象数组

data[0].name

应该足以获取名字。

要遍历整个数组,您可以执行以下操作:

$.each(data, function(k, v){
    alert(v.name);
});

其中v是数组中的当前对象。请注意v == this

答案 1 :(得分:1)

您的JSON定义了一个数组,它将对象作为条目。而不是

alert(data.Name);

你想要

alert(data[0].Name);

(当然,还有其他索引,在您的示例中,您有01)。

(引用的JSON在第一个"之前也无效[缺失Value],但我猜这是问题中的拼写错误。)