2016-12-26 102 views
0

我已经看到一个具有完全相同问题的主题,我已经按照答案那里,但仍然无法做到这一点,希望你能告诉我我是什么做错了。我试图从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。更好,但仍不符合我的预期。我究竟做错了什么?提前致谢!

回答

0

您的第一次尝试很好。你没有信号问题。这是JavaScript的问题。

只需要改变这个

$('.waitingUsrs').append('<li>' + list[i] + '</li>');

这样:

$('.waitingUsrs').append('<li>' + list[i].waitingUsrName + '</li>');

你的第二次尝试是相当疯狂的。 您发送stringUpdateWaitingUsrList,然后迭代就可以了。 所以当然你会得到这样一个疯狂的结果,里面填充了json字符串。

+0

首先,非常感谢你,你在帮助我第二次参加我的学校项目!如果我理解正确,我应该坚持第一个版本,只是改变JavaScript。但现在我得到3次“未定义”。我也检查了拼写,因为在你的行中“waitingUsrName”是用小写字母,我的是大写的,不知道是否有问题,但我已经尝试过两个同样的结果 - 未定义3次。 –

相关问题