访问JSON响应中的字段

时间:2014-11-08 16:42:56

标签: javascript asp.net-mvc json asp.net-ajax

我有一个像这样定义的类:

// the Widget class has lots of properties I don't want to display
// so I use the displayWidget class to carry just what I want to display
public class displayWidget
{
    public string WidgetId {get; set;}
    public string Description {get; set;}

    public displayWidget(Widget widget)  
    {
        WidgetId = widget.WidgetId;
        Description = widget.Description;
    }
}

我有一个以::

结尾的ActionResult方法
var widgets = new List<displayWidget>();
foreach (var widget in matchingWidgets)
{
    widgets.Add(new displayWidget(widget));
}
return Json(widgets);

我的问题是,我不知道如何访问我的ajax .done处理程序中的WidgetId和Description属性:

.done(
    function(response) {
        $('#widgetSection').html('');
        var html = '';
        var jsonData = JSON.parse(response);
        $.each(jsonData, 
            function (index, element) 
            { 
                $('body').append($('<div>', { text: element.WidgetId })); 
                $('body').append($('<div>', { text: element.Description }));
            });
    }
)

.each函数内部应该输出WidgetId和Description?

1 个答案:

答案 0 :(得分:1)

你的ActionResult正在返回一个数组,请尝试:

element[0].WidgetId

这将返回第一个结果,如果需要,您可以轻松遍历列表。

修改

正如@StephenMuecke所提到的,你不需要在这里使用JSON.parse因为你已经返回了JSON数据所以这样的东西足以循环结果:

.done(
    function(response) {
        $('#widgetSection').html('');
        $.each(response, function (index, element) { 
            $('body').append(
                $('<div></div>').text(element.WidgetId )
            )
        });
    }
)