2012-12-12 50 views
0

我創建了一個簡單的聊天應用程序,它將所有連接的用戶名廣播給所有連接到服務器的用戶。每當有新用戶連接時,用戶名列表將被刷新。用戶名重複不必要

我的問題是..連接用戶的列表顯示了很好的只給新連接用戶和其他人,名單是完全重複的用戶名,你可以下面的圖片中看到:

enter image description here

我不明白爲什麼會發生這種情況..爲了清楚理解,我甚至清除了顯示用戶名列表的div showUsernames

請看下面與這個問題有關的代碼。 (隨着用戶越來越多,第一個連接用戶的列表也在增加,然後是第二,第三,第四...)

chat.client.joins = function() { 

    //calling the server side method "GetConnectedUsers" 
    //The return value of the method is stored in a variable "users" 
    chat.server.getConnectedUsers().done(function (users) { 
     //clearing the div, to fill it again 
     $('#showUsernames').val(''); 
     console.log(users.length); 
     //calling each username stored in a static dictionary on server side using for loop 
     for (var i = 0; i < users.length; ++i) { 
      $('#showUsernames').append('<li>' + users[i].Name + '</li>'); 
     } 
    }); 
}; 
+0

你想看看你的用戶集合是否包含一個獨特的名單? – Gavin

+2

@Gavin問題是我正在使用'.val()'清除我的'div'而不是'.empty()',正如ahren所提到的。現在它工作正常。 –

回答

3

您不檢查已經連接的用戶。

解決此問題的最快方法是首先清空列表。

$('#showUsernames').empty(); 
for (var i = 0; i < users.length; ++i) { 
    $('#showUsernames').append('<li>' + users[i].Name + '</li>'); 
} 

files.js

編輯line 72:我現在看你正試圖清除使用.val('')列表。這將不起作用,因爲.val()僅用於輸入元素等。.empty()將在此處起作用,如上所示。

所以,files.jsline 70 - 切換.val('').empty()

+0

是的這是工作......謝謝 –