我试图理解为什么我的indexOf无效!实际上,每次用户加载网站页面时,服务器都会收到包含一个(当前)值的变量“data”:用户名。
client.js:
$.ajax({
type: "POST",
url: "ajax.php",
data: {
ajaxRequest: "userInfos"
},
success: function(data){
var data = JSON.parse(data);
var userInfos = {
name: data.username,
}
socket.emit('pong',JSON.stringify(userInfos));
}
});
server.js:
client.on('pong',function(data){
var data = JSON.parse(data);
if(data.name != null) { // On s'assure qu'il est connecté
/** VARIABLES SESSION **/
client.set("name",data.name);
client.set("id",client.id);
/** VARIABLES SESSION **/
if(connected.indexOf(data.name) == -1){ // Si il n'est pas dans le tableau
var usersInfos = {
name: data.name,
id: client.id
};
io.sockets.emit('pong',JSON.stringify(usersInfos));
connected.push(JSON.stringify(usersInfos)); // On remet son pseudo
console.log("[PONG] "+data.name+" ("+client.id+") est connecté");
}
}
});
因此,只有当用户尚未存在于对象中但实际上不能正常工作时才会完成usersInfos ...他会在每个页面加载或刷新后推送用户...
以下是如何声明connected和usersInfos:
var connected = [];
var usersInfos = {};
请帮助我,我会杀了某人!
答案 0 :(得分:0)
connected.push(JSON.stringify(usersInfos)) … connected.indexOf(data.name) == -1
如果您在connected
数组上推送JSON字符串,则无法在其中找到唯一的.name
。希望能救一个直播: - )
答案 1 :(得分:0)
我通过编写多维对象函数解决了我的问题!
这是功能:
/**
* Création d'un tableau d'objets multidimensionnel
*/
function mdimAdd(arrayName,values) {
// On vérifie si l'array est déjà un objet ou non.
if(typeof(arrayName) == "object") {
arrayName = JSON.stringify(arrayName); // Si oui, on la transforme en string
}
arrayName = arrayName.slice(0,-1); // On supprime le dernier caractère
if(S(arrayName).endsWith("}")) {
arrayName = arrayName+",";
}
arrayName = arrayName+""+values; // On rajoute les valeures
arrayName = arrayName+"}"; // On ferme l'objet
return JSON.parse(arrayName); // On retourne le tableau sous forme d'objet JSON
}
这是创建多维对象的行:
usersInfos = mdimAdd(usersInfos,'"'+data.name+'": {"name": "'+data.name+'","id": "'+client.id+'"}');
然后我现在这样做:
client.on('pong',function(data){
data = JSON.parse(data);
if(data.name != null) { // On s'assure qu'il est connecté
/** VARIABLES SESSION **/
client.set("name",data.name);
client.set("id",client.id);
/** VARIABLES SESSION **/
if(!usersInfos[data.name]){ // Si il n'est pas dans le tableau
usersInfos = mdimAdd(usersInfos,'"'+data.name+'": {"name": "'+data.name+'","id": "'+client.id+'"}');
console.log("[PONG] "+data.name+" ("+client.id+") est connecté");
}
}
});