Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Yuri Fontella

Janelas de bate-papo estilo facebook

Recommended Posts

Tenho essa função que abre janelas de bate-papo, ele vai abrindo janelas individualmente... Mas conforme vou clicando para abrir o chat, ele traz as mensagens do último clicado em todas as janelas já abertas. Resumindo, fica todas as janelas iguais com as mesmas mensagens.

 

Segue o código:

 var janelas = new Array(); $("body").on('click', '.open-msg', function(){  var id = $(this).attr('id');  var nome = $(this).attr('nome');    function add_janelas(id, nome){   var html_add = '<div class="janela" id="jan_'+id+'"><ul class="listar"></ul></div>';   $('#janelas').append(html_add);}  janelas.push(id);    for(var i = 0; i < janelas.length; i++){      if(janelas[i] == undefined){	janelas.splice(i, 1);	i--;      }    }		   add_janelas(id, nome);	   //Ajax que traz as mensagens dentro da janela do chat  $.ajax({   url: ''+baseurl+'services/msg',   type: 'post',   data: { id_remetente: id },   success: function(data){	        var html = $('.listar').html("");	$(data).each(function(index){	  html.append('<li><span>'+this.nome+':</span><p>'+this.texto+'</p></li>');         })		 		     }})	return false 	})

Ao clicar no link para abrir ele pega o atributo id e o nome...

 

 

Alguém que manja em chats?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é pq vc tá aplicando em todos os .listar

var html = $('.listar')

vc precisa selecionar apenas o que vc quer, se não vai acontecer isso mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É eu cheguei a entender o que está acontecendo... parando por aqui hoje. Valeu!!

 

 

Alguma ideia de como trazer as mensagens junto com a janela, mas sem carregar nas outras que já estão abertas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

igual vc fez lá em cima amigo.. diferenciando uma da outra:

troca:

var html = $('.listar').html("");
por
var html = $('#jan_' + id + ' .listar').html("");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi exatamente o que eu fiz :)

 

$('#jan_'+this.id_remetente+' ul.listar').append('<li><span>'+this.nome+':</span><p>'+this.texto+'</p></li>');

Só que o services/msg ele carrega a função de fazer um select trazendo as mensagens tanto do usuário quanto a do remetente, só que estranhamente ele trouxe só as do remetente. Mas cada um na sua caixa pelo menos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$('.'+id+' ul.listar').append('<li><span>'+this.nome+':</span><p>'+this.texto+'</p></li>');

 

Agora sim, só coloquei o "id" que peguei do atributo...e não o this.id_remetente que veio do $.ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

William Bruno, vê se tu consegue me dar uma luz... digamos que eu abre duas janelas (as informações estão sendo carregadas normalmente)... Porém, só o formulário da primeira janela aberta funciona... o meu envio é feito de dessa forma:

 

$('body').on('submit', '.msg-send', function () {
  if ($('#input-msg').val() == "") {
    return false;
  }
  $.ajax({
    url: '' + baseurl + 'main/email',
    type: 'post',
    data: {
      id_usuario: $('#id_usuario').val(),
      texto: $('#input-msg').val()
    },
    success: function (email) {
      if (email != false) {
        alert('Erro');
      }
      else {
        $('#input-msg').val("");
      }
    }
  })
  return false

})

Sabe me dizer se é a forma de envio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

texto: $('#input-msg').val()

vc duplicou IDs nas janelas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.