Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Capella

Erro em ajax com frames

Recommended Posts

bom dia ae galera..

 

bem estou com um certo problema :D

 

tenho um sistema que grava as ações dos usuários, um log pra ser mais exato.

pos bem.

 

quando o usuário sair ele precisa gravar um log. até ae beleza. so que quando ele clica no X do navegador.. direto não grava o log.

 

então oq ue fiz.

criei uma chamada ajax basicona apenas pra chamar a pagina que vai gravar o log.

bem o problema ta ae.

esse sistema que tenho é com frames.

 

ja tentei colocar dentro de <noframes></noframes>

 

um body onunload ou onbeforeunload

 

para chamar a função.

que nao chama nada.

e continua sem gravar.

 

bem fiz os testes indo direto na pagina ele grava e criando outra pagina o ajax funciona.

 

o codigo ajax segue abaixo.

 

alguem teria alguma ideia pra funcionar isso com frames

 

function gravaLog(chaveUser)
{
 alert("Você está saindo do sistema"); 
ajax=GetXmlHttpObject()
if (ajax==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }

 var url = "conn/logCloseWindow.asp";
 url = url+"?idUserLog="+chaveUser;
 ajax.onreadystatechange=stateChanged
 ajax.open("GET",url,true)
 ajax.send(null)

}
function stateChanged() 
{ 
if (ajax.readyState==4 || ajax.readyState=="complete")
 { 
 alert('Saiu com sucesso');
 }
else{
  document.getElementById("resposta").innerHTML = "Aguarde";
 }
}
function GetXmlHttpObject()
{
var ajax=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 ajax=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  ajax=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  ajax=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return ajax;
}

no aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica:

[i]ajax.open("GET",url,true) [/i]<--Bota um false aqui.
[i]ajax.send(null)[/i]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

Não sei em qual plataforma você esta trabalhando, mesmo assim, se estivesse no seu lugar usaria um evento de aplicação (onSessionEnd do dot net por exemplo) para gravar esta informação, se não der para ser assim, sinceramente não saberia como te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o sistema é em asp antigo..

 

não sei se possui essa opção que existe no dot net.

 

e da mesma forma não sei como isso me ajudaria para gravar o log..

 

meu problema é so em gravar o logo dos usuário quando clicarem no fechar do navegador..

pq preciso controlar isso.

 

se alguem tiver alguma ideia.

 

que posssa resolver o meu problema agradeço ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um arquivo global.asa escrito em asp onde você pode declarar estas funções que o klaygomes mencionou.

Não é apenas para .Net. É um arquivo opcional que fica na raiz de sua aplicação.

 

É a melhor maneira de você fazer isto, pois se o usuário matar o processo do browser também, você não conseguirá o log. É melhor controlar isto no servidor do que no cliente, pois pelo cliente, você possibilita até que o usuário simule que saiu do sistema(gere o log) sem ter saído.

 

Então é só declarar o método onSessionEnd no global.asa, e a partir daí gravar o log do usuário.

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.