我看过一个完全相同问题的主题,我已经按照那里的答案,但仍然无法完成这项工作,希望你能告诉我我做错了什么。我正在尝试从Hub向客户端发送一个对象列表(用户名),但我得到的输出是[object Object]。这是我的班级,里面只有一个属性:
public class WaitingUser
{
public string waitingUsrName{ get; set; }
}
在我的集线器课程中,我正在创建列表,我尝试将静态修饰符更改为 public ,但结果相同:
static List<WaitingUser> WaitingUseresList = new List<WaitingUser>();
我有一个带有 try / catch 语句的方法,我在 catch 中放置了一些虚拟数据用于测试。已经调试它,正确调用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
{
// 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。更好,但仍然不是我所期望的。我究竟做错了什么?提前致谢!
答案 0 :(得分:1)
你的第一次尝试很好。而且你没有发出信号问题。这是javascript问题。
只需要改变这个
$('.waitingUsrs').append('<li>' + list[i] + '</li>');
到此:
$('.waitingUsrs').append('<li>' + list[i].waitingUsrName + '</li>');
你的第二次尝试非常疯狂。
您将string
发送至UpdateWaitingUsrList
,然后迭代。
所以当然你已经得到了如此疯狂的结果,列表中填充了json字符串字符。