【发布时间】:2014-07-19 12:10:23
【问题描述】:
我查看了其他问题,但他们似乎没有完全回答这个问题,我试图通过 JSON 将对象传递给客户端 Javascript。我正在使用 Newtonsoft.Json 来简化此过程,但我似乎无法收到该对象。
代码如下:
建立连接后,我在客户端 javascript 中使用 start().done() 调用 Hub:
//start comm with server
$.connection.hub.start().done(function () {
console.log('Grabbing playlist data');
Playlist.server.requestPlaylist();
});
这会调用以下方法,该方法应该抓取对象并将其传回:
public void requestPlaylist()
{
var playlistData = (from c in db.Playlist where c.ID > 0 select c).Include(h => h.Song).ToList();
Playlist player = new Playlist();
foreach (var item in playlistData)
{
player.ID = item.ID;
player.Profile = item.Profile;
player.Song.ID = item.Song.ID;
player.Song.name = item.Song.name;
player.upvotes = item.upvotes;
}
string jsonObject = JsonConvert.SerializeObject(player);
Clients.All.recievePlaylist(jsonObject);
}
所以在这里,我正在搜索数据库,获取结果并将其存储到播放列表模型中,然后使用 newtonsoft.json 将模型转换为 json 对象(其原理与他们的示例大致相同)网站)。
从这里调用的客户端javascript是:
function recievePlaylist(jsonObject) {
console.log('test to recieve data: ' + jsonObject.ID + ' test.');
};
现在只是出于测试目的,我只是退出控制台,但这会返回:
“测试接收数据:测试。”是怎么回来的。
我错过了什么?
【问题讨论】:
-
你不是必须先
eval(jsonObject)receivePlaylist()吗? -
你在recievePlaylist 函数中查看过jsonObject 吗?它什么都没有吗?
-
顺便说一句,你的“玩家”对象在 foreach 循环中被多次覆盖 - 你确定这是你的计划吗?
标签: c# javascript asp.net-mvc json signalr