我已经看到一个具有完全相同问题的主题,我已经按照答案那里,但仍然无法做到这一点,希望你能告诉我我是什么做错了。我试图从Hub发送一个对象列表(用户名)到客户端,但是我得到的输出是[object Object]。这里是我的类中,它只是1属性:SignalR发送从Hub类到客户端的对象列表
public class WaitingUser
{
public string waitingUsrName{ get; set; }
}
在我的HUB类我创建的列表中,我已经尽力了静态修饰符更改为公共,但相同的结果:
static List<WaitingUser> WaitingUseresList = new List<WaitingUser>();
我有的try/catch声明,在这里我把一些虚拟数据在抓用于测试的方法。已经调试它,美中不足的是正确地打来电话,我的对象是在列表中:
catch
{
// WaitingUseresList.Add(new WaitingUser { waitingUsrName = userName });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "John" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Mike" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Steven" });
Clients.All.UpdateWaitingUsrList(WaitingUseresList);
}
而且在我的客户端,我有:
objHub.client.UpdateWaitingUsrList = function (WaitingUseresList) {
$('.WaitingUsrs').val('');
var list = WaitingUseresList;
for (var i = 0; i < list.length; i++) {
$('.waitingUsrs').append('<li>' + list[i] + '</li>');
}
var height = $('.waitingUsrs')[0].scrollHeight;
$('.waitingUsrs').scrollTop(height);
}
输出是:
- [对象对象]
- [对象对象]
- [对象对象]
我跟着other topic使它工作,但仍然无法弄清楚。所以我改变了我的catch语句是这样的:
catch
{
// WaitingUseresList.Add(new WaitingUser { waitingUsrName = userName });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "John" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Mike" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Steven" });
string list = Newtonsoft.Json.JsonConvert.SerializeObject(WaitingUseresList);
Clients.All.UpdateWaitingUsrList(list);
Clients.Caller.NoExistAdmin();
}
和我的客户端:
objHub.client.UpdateWaitingUsrList = function (list) {
$('.WaitingUsrs').val('');
var waitingList = list;
for (var i = 0; i < waitingList.length; i++) {
$('.waitingUsrs').append('<li>' + list[i] + '</li>');
}
var height = $('.waitingUsrs')[0].scrollHeight;
$('.waitingUsrs').scrollTop(height);
}
输出成为this。更好,但仍不符合我的预期。我究竟做错了什么?提前致谢!
首先,非常感谢你,你在帮助我第二次参加我的学校项目!如果我理解正确,我应该坚持第一个版本,只是改变JavaScript。但现在我得到3次“未定义”。我也检查了拼写,因为在你的行中“waitingUsrName”是用小写字母,我的是大写的,不知道是否有问题,但我已经尝试过两个同样的结果 - 未定义3次。 –