Boa noite pessoa,
estou com um problema ao executar um ajax, eu tenho uma função que executa uma requisição ajax a cada 30 segundos afim de atualizar dados na tela.
A função executa normalmente no tempo correto, o problema é que essa função continua executando mesmo eu saindo da página que o script está(estou preocupado com a performasse do sistema por conta disso), se trata de uma jsp, os códigos javascript fica dentro da própria jsp.
Alguém sabe o por que disso acontecer?
function buscarTodosEventos() {
var search = window.location.search;
var url = "";
var id = search.substring(search.indexOf("=") + 1, search.length);
if(id != "")
url = "eventosServlet" + "?id=" + id;
else
url = "eventosServlet";
$.get(url, function (data) {
$('#calendar').fullCalendar("removeEvents");
$('#calendar').fullCalendar("addEventSource", JSON.parse(data));
$('#calendar').fullCalendar("refetchResources");
$('#calendar').fullCalendar("rerenderEvents");
});
}
//aqui em chamo a função a cada 30 segundos
$(document).ready(function() {
setInterval(function() {
buscarTodosEventos();
}, 30000);
});
Teoricamente, isso é impossível. O javascript precisa da janela/aba aberta para executar.
Se está usando jQuery, faz menos sentido ainda que isso continue, visto que o objeto $ não estará disponível.
Bom dia, @darlan_machado, também não entendo como está ocorrendo isso, não deveria ser possível, quando troco de jsp o script que esta em outra jsp continuar executando. estou analisando o problema.
Se seu script fizer a requisição ajax, e vc mudar de página, a thread no servidor já terá sido criada e irá executar até o fim, não importando se já tiver mudado de página. Agora, se o código do servidor estiver executando infinitamente, creio que seja um problema de implementação no servidor, pois o setInterval
não irá executar de novo (à menos que esse código javascript esteja replicado em outras páginas).
@Lucas_Camara agradeço, o sistema que estou dando manutenção e bem antigo a maneira a qual ele foi construído não é muito boa, eu conseguir resolver o problema, nesse sistema não há troca de páginas(navegação), toda vez que entro em um link para outra página o que estava acontecendo era que estava sendo executado uma função js com o load() que jogava qualquer jsp no centro da mesma página. assim $(’#miolo’).load(‘nome.jsp’); dessa maneira o processo do setInterval ficava sempre atrelado a mesma página. oque eu fiz vou tirar essa função load() do link ao sair da página. estava assim <a href="navegar('#miolo','nome.jsp')"></a>
, troquei para isso <a href="nome.jsp"></a>
e fui resolvendo as coisas.
1 curtida
agradeço @darlan_machado sua resposta me esclareceu umas coisas e conseguir resolver o problema.