2016-12-26 145 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次。 –

相關問題