2016-03-04 97 views
1

C#/ MVC /淘汰賽/ JSON創建從JSON響應

我有以下的javascript可觀察到的淘汰賽陣列:

function Feed(data) { 
    this.ID = ko.observable(data.ID); 
    this.RSSName = ko.observable(data.RSSName); 
    alert(data.RSSName + " " + data.ID); 
} 

function ViewModel() { 
    self = this; 
    self.CurrentFeeds = ko.observableArray([]); 
    self.isLoading = ko.observable(false); 
    self.StatusMessage = ko.observable("Loading"); 

    $.ajax({ 
     type: "GET", 
     url: '@Url.Action("RSSList", "RSS")', 
     success: function (data) { 
      var feeds = $.map(data, function (item) { 
       alert(item.RSSName + " " + item.ID + " 1"); 
       return new Feed(item) 
      }); 
      self.CurrentFeeds(feeds); 
      //self.CurrentFeeds(data); 

     }, 
     error: function (err) { 
      alert(err.status + " : " + err.statusText); 
     } 
    }); 

    self.save = function() { 
     self.deleteFeed = function (feed) { 
     }; 
    }; 
} 

JSON響應(從小提琴手複製)看起來是這樣的:

{"aaData":[{"ID":"0","RSSName":"Most Recent"},{"ID":"1","RSSName":"Website feed"}]} 

控制器:

public JsonResult RSSList() 
    { 
     var query = (from t in db.tblRSSFeeds 
        select new ViewModels.RSSList() 
        { 
         ID = t.pkID.ToString(), 
         RSSName = t.szFeedName 
        }).OrderBy(t => t.RSSName).ToList(); 

     var recent = new ViewModels.RSSList(); 
     recent.ID = "0"; 
     recent.RSSName = "Most Recent"; 
     query.Insert(0, recent); 

     return Json( query, JsonRequestBehavior.AllowGet); 
    } 

我在想我的問題與Feed(數據)函數有關,因爲它只傳回一條記錄。我嘗試設置self.CurrentFeeds(數據)以及沒有運氣。上面顯示的「警報」顯示未定義,但我可以看到從提琴手下來的數據...

由於某些原因,成功函數沒有正確地看到數據創建數組。爲什麼是這樣?

+0

獲取請求的URL應該是什麼? –

+0

它的/ RSS/RSSList(我確實看到數據回來的小提琴手,所以我知道它擊中了正確的URL ......) – DaBlue

回答

2

如果是響應:

{"aaData":[{"ID":"0","RSSName":"Most Recent"},{"ID":"1","RSSName":"Website feed"}]}

更改success回調:

$.ajax({ 
    type: "GET", 
    url: '@Url.Action("RSSList", "RSS")', 
    success: function (data) { 
      var feeds = $.map(data.aaData, function (item) { 
      alert(item.RSSName + " " + item.ID + " 1"); 
      return new Feed(item) 
     }); 
     self.CurrentFeeds(feeds); 
    }, 
    error: function (err) { 
     alert(err.status + " : " + err.statusText); 
    } 
}); 

而且我相信的它的作品,因爲你試圖映射對象不是一個數組,所以你必須得到要映射的數組aaData

+0

紅眼。謝謝!我正在查看aaData,並嘗試將它與函數調用中的「數據」關聯起來(甚至將名稱更改爲aaData。但不是data.aaData ...我現在就試過了,它的工作原理!aaData是否是自動的? – DaBlue

+0

Nop,我相信沒有,但我需要看到'Action'才能獲得更多信息。 –

+0

我剛纔添加了上面的動作。 – DaBlue