2016-12-26 3 views
0

Я видел тему с той же проблемой, и я следил за ее ответом, но все равно не могу выполнить эту работу, надеюсь, что вы можете сказать мне, что я делать неправильно. Я пытаюсь отправить список объектов (имена пользователей) из концентратора на клиент, но я получаю вывод [object Object]. Вот мой класс только с 1 собственностью в нем:SignalR отправляет список объектов из класса Hub клиенту

public class WaitingUser 
{ 
    public string waitingUsrName{ get; set; } 
} 

В моем классе хаба я создаю список, я попытался изменить модификатор статического для общественного, но тот же результат:

static List<WaitingUser> WaitingUseresList = new List<WaitingUser>(); 

у меня есть метод с попробовать/поймать заявления, в котором я поставил некоторые фиктивные данные в улове для испытания. Уже отлажена его, улов правильно называется и мои объекты в списке:

  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

Ваша первая попытка была хорошая. И у вас не проблема signalr. Это проблема с javascript.

Просто нужно изменить

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

к этому:

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

Ваша вторая попытка довольно сумасшедшим. Вы отправляете string в UpdateWaitingUsrList, а затем итерации на него. Итак, у вас есть такой безумный результат с списком, заполненным символами json string.

+0

Во-первых, большое вам спасибо, вы помогаете мне во второй раз с моим школьным проектом! Если я правильно понял, я должен придерживаться первой версии и просто изменить javascript. Но теперь я получаю 3 раза «неопределенные». Я также проверил правописание, так как в вашей строке «waitingUsrName» есть маленькая буква, у меня есть капитал, не знаю, если дело, но я пробовал оба и тот же результат - не определено 3 раза. –

Смежные вопросы