Ir para conteúdo

POWERED BY:

Arquivado

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

rauan100

Pegar objetos jason via ajax

Recommended Posts

Galera, Boa tarde, estou com um grande problema, eu estou tentando criar um bate papo, mas o meu ajax não mostra os valores, que o php mandou via json, quando eu abro o debug, lá mostra que os valores foram retornados. No debug mostra assim:

[{"id":"2","mensagem":"teste 2","fotoUser":"","id_de":"1","id_para":"11","janela_de":"11"},{"id":"1","mensagem":"oi tio","fotoUser":"","id_de":"1","id_para":"11","janela_de":"11"}]

Aqui está meu código JavaScript:

jQuery(function(){
	var userOnline = Number(jQuery('span.userlog').attr('id'));
       function add_janela(id, nome, status){
           var janelas = Number(jQuery('#chats .window').length);
           var pixels = (270+5)*janelas;
           var style = 'float:none; position:absolute; bottom:0; left:'+pixels+'px';

           var splitDados = id.split(':');
           var id_user = Number(splitDados[1]);
           var janela = '<div class="window" id="janela_'+id+'" style="'+style+'">';
           janela += '<div class="header_window"><a href="#" title="fechar" class="close">X</a> <span class="name">'+nome+'</span><span id="'+id+'" class="'+status+'"></span></div>';
           janela += '<div class="body"><div class="mensegers"><ul></ul></div>';
           janela += '<div class="send_message" id="'+id+'"><input type="text" name="mensagem" class="msg" id="'+id+'"/></div></div></div>';


            jQuery('#chats').append(janela);

       }
        
		/* aqui começa a função de retornar historico*/function retorna_historico(id_conversa){
			jQuery.ajax({
				type: 'POST',
				url: 'historico.php',
				data: {conversacom: id_conversa, online: userOnline},
				dataType: 'json',
				success: function(data){
					jQuery.each(data, function(i,msg){

						if(jQuery('#janela_'+msg.janela_de).length > 0){
							
							if(userOnline == +msg.id_de){
								jQuery('#janela_'+msg.janela_de+'.mensegers ul').append('<li id="'+msg.id+'" class="me"><p>'+msg.mensagem+'</p></li>');
							}else{
								jQuery('#janela_'+msg.janela_de+'.mensegers ul').append('<li id="'+msg.id+'"><div class="imgsmall"></div><img src="upload/'+msg.fotoUser+'"/><p>'+msg.mensagem+'</p></li>');
							}
						}
					});
					[].reverse.call(jQuery('#janela_'+id_conversa+'.mensegers li')).appendTo(jQuery('#janela_'+id_conversa+'.mensegers ul'));
					var altura = jQuery('#janela_'+id_conversa+'.mensegers').height();
					jQuery('#janela_'+id_conversa+'.mensegers').animate({scrollTop: altura},'500');
				}
			});
		}/*aqui termina a função*/
		
    jQuery('body').on('click', '#users_on a',function(){
       var id = jQuery(this).attr('id');
        jQuery(this).removeClass('comecar');

        var status = jQuery(this).next().attr('class');
        var idJanela = Number(id);
		
		
		
		



        if(jQuery('#janela_'+idJanela).length == 0){
	var nome = jQuery(this).text();
            add_janela(id,nome,status)
            /*Aqui exibe os dados retornados*/retorna_historico(idJanela);
        }else{
            jQuery(this).removeClass('comecar');
        }

    });

    jQuery('body').on('click','.header_window',function(){
        var next = jQuery(this).next();
        next.toggle(100);
    });
    jQuery('body').on('click', '.close',function(){
        var parent = jQuery(this).parent().parent();
        var idParent = parent.attr('id');
        var splitParent = idParent.split('_');
        var idJanelaFechada = Number(splitParent[1]);
        var contagem = Number(jQuery('.window').length)-1;
        var indice = Number(jQuery('.close').index(this));
        var restamAfrente = contagem-indice;

        for(var i =1; i <= restamAfrente; i++){
            jQuery('window:eq('+(indice+i)+')').animate({left:"-=275"}, 200);
        }
        parent.remove();
        jQuery('#users_on li#'+idJanelaFechada+'a').addClass('comecar');
    });
	
     jQuery('body').on('keyup', '.msg', function(e){
		 if(e.which == 13){
			 var texto = jQuery(this).val();
			 var id = jQuery(this).attr('id');

			 
			 
			 
			 jQuery.ajax({
				 type: 'POST',
				 url: 'submit.php',
				 data:{mensagem:texto, de:userOnline, para:id},
				 success: function(retorno){
					 if(retorno !== 'ok'){
						 jQuery('.msg').val('');
					 }
				 }
			 });
		 }
	 });
	 
});

Código php(Ele parece está correto):

<?php
require("conn.php");
?>
<?php
$load = htmlentities(strip_tags($_POST['conversacom']));
 $mensagens = array();
 $id_conversa = (int)$_POST['conversacom'];
 $online = (int)$_POST['online'];
 
 $pegaConversas = mysql_query("SELECT * FROM conversas WHERE de='$online' AND para='$id_conversa' OR de='$id_conversa' AND para='$online' ORDER BY id DESC LIMIT 10");
  while($row = mysql_fetch_assoc($pegaConversas)){
	  $fotouser = '';
	  if($online == $row['de']){
		  $janela_de = $row['para'];
	  }elseif($online == $row['para']){
		  $janela_de = $row['de'];
		  $loco = $row['image'];
		  $pegaFoto = mysql_query("SELECT image FROM users WHERE id='$loco'");
		  $pegafoto = mysql_query($pegaFoto);
		  while($usr = mysql_fetch_assoc($pegafoto)){
			  $fotouser = ($usr['image'] == '') ? 'img/padrao.png' : 'upload/'.$usr['image'];
		  }
	  }
	  $emotions = array(':)', ':@', '8)', ':D', ':3', ':(', ';)');
	  $imgs = array(
	  '<img src="emotions/nice.png" width="14"/>',
	  '<img src="emotions/angry.png" width="14"/>',
	  '<img src="emotions/cool.png" width="14" />',
	  '<img src="emotions/happy.png" width="14" />',
	  '<img src="emotions/ooh.png" width="14" />',
	  '<img src="emotions/sad.png" width="14" />',
	  '<img src="emotions/right.png" width="14" />'
	  );
	  $msg = str_replace($emotions, $imgs, $row['mensagem']);
	  $mensagens[] = array(
	  'id' => $row['id'],
	  'mensagem' => utf8_encode($msg),
	  'fotoUser' => $fotouser,
	  'id_de' => $row['de'],
	  'id_para' => $row['para'],
	  'janela_de' => $janela_de
	  );
  }
  die(json_encode($mensagens));
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que está faltando o header de json no teu php, coloque isso antes do echo:

header("Content-Type: application/json;charset=utf-8");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw, era isto mesmo que estava faltando, outro pequeno problema, O navegador não está entendendo esta linha de código, ele apenas funciona se eu tirar a "div janela_ "do parenteses, ou tirar a "div .mensegers junto com a ul", mas se eu tirar um deles, isto irá causar um bug no meu bate-papo. Poderia informar qual o problema? A linha que eu tirei este pedaço de código é a 10º linha depois de começar a função retornar histórico.

jQuery('#janela_'+msg.janela_de+' .mensegers ul')

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.