Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

[Resolvido] Problemas com unload jQuery

Recommended Posts

Então, eu testei no chrome e funcionou como queria, ele é ativado quando é dado um refresh na página, mas não ativa os valores dados quando ele é ativado, agora, no mozilla, é diferente, ele funciona, mas aparentemente, ele não pula esses valores, ativando então e fazendo com que me dê uma grande dor de cabeça :lol: ..

 

Alguém sabe como que eu posso fazer para burlar, melhorar, ou até mesmo fazer funcionar corretamente ?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara .. nao sei qual é o "contexto" do seu problema.. mas geralmente essas zicas que dá no opera e chrome com algumas funções jQuery eu geralmente resolvo com window.load...

 

Como por exemplo os problemas com outerWidth() e outerHeight..

 

Na pratica tente assim:

 

        $(document).ready(function(){
                 $(window).load(function(){
                          $(window).unload(function(){
                                   //Seu codigo
                          });
                 });
        });

 

 

Eu sei q parece estranho.. mas tente.. rsrsrs..

 

Com outerWidth() e outerHeight() funciona..

 

Passo o link do codigo ai.. melhor ainda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei como você falou:

 

$(document).ready(function(){
                   $(window).load(function(){
                       $(window).unload(function(){
                           $.post( "{/literal}{$url}{literal}logout.php" );
                       });
                   });
               });

 

mas o problema como falei, continua no mozilla, chrome está ok.

 

o que acontece, quando redireciono minha página atual, por um link, para outra, ele dá um refresh, correto(?).

 

No chrome ele não ativa o código do $.post mas no mozilla ele faz isso.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa..

 

O q o console de erros diz???

 

Tenta comentar esse $.post e da um alert("teste");

 

E ve se qdo der o refresh ele vai dar o alert.. tem q ver se realmente ele n ta entrando na função unload.. se tiver entrando entao é o post q ta com problema..

 

Voce ta com o firebug??? Vai na aba "Rede" -> "XHR" da o refresh e ve se ele ta enviando o ajax... se der erro clica no erro e depois em "Resposta" e me diz o q aparece..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei com o alert() como você sugeriu, foi tranquilo, ele está entrando no unload.

 

com o $.post, foi também, funcionando direitinho, respondeu com o html da minha página em HTML.

 

como pode o $.post estar com problema, só coloquei o link, que é para não dar erro :lol: ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po cara, entao ta retornando de boa rsrs..

 

Da um callback nesse post pra imprimir esse dado de retorno..

 

Assim:

 

$.post( "{/literal}{$url}{literal}logout.php", function(data){

$("#EscolheUmaDiv").html(data);

});

Compartilhar este post


Link para o post
Compartilhar em outros sites

com o $.post, foi também, funcionando direitinho, respondeu com o html da minha página em HTML.

? ele deveria responder com oq o arquivo logout.php dá de retorno, e não com o html da tua página html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

(doc. do $.post para referencia http://api.jquery.com/jQuery.post/)

 

E o q o Wiliam falou é verdade..

 

Observe na saida do firebug se nao tem nenhum erro apontado.. ele tem q retornar o q esta de retorno no script q você apontou..

 

Na duvida cara.. vai la no logout.php e da um retorno so pra testar.. echo "<h1>teste</h1>".. ele tem q retornar isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

não me retornou nada... =/

 

? ele deveria responder com oq o arquivo logout.php dá de retorno, e não com o html da tua página html.

 

aqui está minha página logout.php, não entendi tbm, mas ele retornou o HTML da página login.php

 

<?php

   session_start();

   require "allConfigurations.php";

   $Sql->editById( "User", array( "online" => 0 ), $_SESSION[ "id_user_session" ] );
   unset( $_SESSION[ "id_user_session" ], $_SESSION[ "name_user_session" ], $_SESSION[ "email_user_session" ] );

   session_destroy();

   $func->redirectTo( $Sql->getUrl() );

   exit;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ta dando na requisição ajax, ou realmente nao esta retornando nada no logout.php???

 

você tem q tratar sua requisição la no logout.php, e filtrar seu retorno..

 

Se tiver dando erro no ajax o firebug(XHR) aponta.. é so olhar com atençao la.. fala até a linha do problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Se tiver dando erro no ajax o firebug(XHR) aponta.. é so olhar com atençao la.. fala até a linha do problema.

Não há nenhum erro na requisição, nada, ele me retorna corretamente...

 

dei um comment no meu

$func->redirectTo( $Sql->getUrl() );

e retornou vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmm.. tem certeza q precisa de ajax nisso ai??? Ele ta destruindo as session e dando um redirect...

 

acho q nao precisa de enviar dado nenhum por post ai nao..

 

Mas de qualquer forma.. ele da fazendo o logout??? Se tiver!! Faz o redirect no javascript! lá..

 

Faz assim..

 

no php:

//Comenta ela
//$func->redirectTo( $Sql->getUrl() );
return $Sql->getUrl(); 
exit;

 

no js:

 

$.post( "{/literal}{$url}{literal}logout.php", function(data){
      alert(data); //pra ver se ta vindo o link
      window.location.href = data;
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

return $Sql->getUrl()

 

retorna a base da url...

 

vou testar assim:

 

vou criar outra página para apenas fazer o delete das sessions e editar para 0(zero) o online...

 

 

update:

 

criei uma nova página, chamada, logoutUnload.php

 

<?php

   require_once "session.php";
   require_once "allConfigurations.php";

   $Sql->editById( "User", array( "online" => 0 ), $_SESSION[ "id_user_session" ] );
   unset( $_SESSION[ "id_user_session" ], $_SESSION[ "name_user_session" ], $_SESSION[ "email_user_session" ] );

   session_destroy();

?>

 

na requisição que é feita pelo navegador, visto pelo firebug, me retorna vazio, o que é certo, já que não mando ele retornar nada, mas assim mesmo, ele continua entrando sempre no refresh no $.post

 

<script type="text/javascript">
           {literal}
               $( document ).ready( function(){
                   $( window ).load( function(){
                       $( window ).unload( function(){
                           $.post( "{/literal}{$url}{literal}logoutUnload.php" );
                           return false;
                       } );
                   } );
               } );

           {/literal}
       </script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esquece o q eu falei.. n tinha lida o update.. deixa eu ver

 

update

 

Eu to um poco confuso.. o que nao ta funcionando entao?? O q q quer dizer ele cai no refresh d novo? Entrou em loop???

 

Pq cara.. se é um script de logout.. o mais correto era voce enviar, fazer o logout, voltar no callback.. e exibir uma mensagem..

 

Essa pagina nao ta online nao?? Preciso visualizar isso. agora eu fiquei curioso.. eaheuhauehua!

Compartilhar este post


Link para o post
Compartilhar em outros sites
mas assim mesmo, ele continua entrando sempre no refresh no $.post

de que refresh você ta falando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não cara, o que eu quero fazer:

 

Tenho no meu banco de dados o campo online nele, quando gera a sessão, eu dou o valor 1, dizendo que ele está online, usando o site, só que caso você feche o navegador, ele vai continuar com 1, e perdendo a sessão, fica impossível reverter esse valor, para 0, pois não sei qual usuário que estava ou não logado.

 

Então eu descobri o .unload() no jQuery, que no chrome funciona como eu tinha imaginado, mas que no mozilla e IE, não funciona, fazendo com que o arquivo que está no $.post() seja ativado a cada refresh.

 

:lol: acho que é mais ou menos isso ^_^

 

update:

 

de que refresh você ta falando ?

Me refiro ao refresh do navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu descobri o .unload() no jQuery, que no chrome funciona como eu tinha imaginado

esse comportamento está incorreto.

 

, mas que no mozilla e IE, não funciona, fazendo com que o arquivo que está no $.post() seja ativado a cada refresh.

Sim, esse é o comportamento correto.

É isso que esse evento faz.

 

 

 

de que refresh você ta falando ?

Me refiro ao refresh do navegador.

Sim, a cada refresh, o unload() será disparado.

 

 

 

Assim, na boa. A estratégia que eu faria:

Grava no banco qual foi a ultima interação do cara. (sem ajax).

 

Ele abriu uma página, grava q a ultima interação dele foi as 16h59

Cada vez que ele abrir uma pagina, enviar um form... você grava o horario da ultima interação.

 

 

Para saber quem está online, e quem não está, você faz uma query

, buscando, todo mundo q tenha tido uma interação em pelo menos nos ultimos 10 minutos. Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima ideia William, vou por isso em código e já retorno..

 

update:

 

Fiz como o @William, falou, ficou muito mais seguro, descobrir quem está ou não, não tinha pensado nisso antes, irei utilizar dessa lógica com certeza mais vezes, obrigado pela paciência. :D

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.