2014-11-08 164 views
0

我有一個類定義是這樣的:訪問字段

// 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); 

我的問題是,我不知道如何訪問爲widgetid和Description屬性我的AJAX .done處理程序的內部:

.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 })); 
      }); 
    } 
) 

應該是。每次的F裏面有什麼unction輸出WidgetId和Description?

+0

什麼element.WidgetId/element.Description返回? – malkam 2014-11-08 16:46:37

+0

我不知道...我知道該響應包含我期望它,但現在JSON.parse(響應)返回錯誤0x800a03f6 - JavaScript運行時錯誤:無效字符 – davecove 2014-11-08 17:39:17

+2

不'用戶JSON.parse。嘗試$ .each(response,function(){}); – malkam 2014-11-08 17:41:13

回答

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) 
      ) 
     }); 
    } 
) 
+0

這不是真的有必要。所有需要的都是'$ .each(response,function(index,element){$('body')。append($('

').text(element.WidgetId))});'響應值已經JSON,所以它不應該被解析 – 2014-11-09 02:17:14

+0

同意,但他的問題是如何訪問數據,這就是我已經解釋。我認爲如果他知道這是一個數組(我已經解釋過),那麼他可以從那裏繼續使用它。儘管爲了使其他用戶清楚起見,我會用這些信息更新答案。 – webnoob 2014-11-09 09:47:56