Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida com setInterval

Boa noite, pessoal, alguém poderia me tirar uma duvida.

Estou montando um código em Jquery(Assitindo seu curso), na finalidade de trazer as notificações a cada X segundos. Meu problema no código seria com o setInterval, ao carregar o document ele chama a função my_function();

O problema é que ele faz isso toda vez ao carregar, ou seja ele esta apresentando os dados repetidos a cada 200ms, a estrutura do meu json está retornando dessa forma:

[{"Notifica":{"id":"1","conteudo":"Teste Notifica\u00e7\u00e3o","created":"2020-03-07 00:09:21","estabelecimento_id":"1"}}]

Qual seria o método correto para ele trazer os dados sem repetir e chamar a função inserePlacar? porque chamando essa função eu já consigo tratar o data


//Traz as Notificações
$(document).ready(function() {
    setInterval("my_function();", 2000);
});

function my_function() {
    $.get("http://localhost/Vayron/notificas/notificacoesFind", inserePlacar);
}

function inserePlacar(data) {
    console.log(data);
    var corpoTabela = $(".atualizaNotificacoesAjax").find("tbody");
    var conteudo = data[0]['Notifica']['conteudo'];
    var created = data[0]['Notifica']['created'];
    var linha = novaLinha(conteudo, created);
    corpoTabela.prepend(linha);
}


function novaLinha(conteudo, created) {
    var linha = $("<tr>");
    var colunaConteudo = $("<td>").text(conteudo);
    var colunaCreated = $("<td>").text(created);
    var colunaRemover = $("<td>");
    var link = $("<a>").addClass("botao-remover").attr("href", "#");
    var icone = $("<i>").addClass("far").addClass("fa-trash-alt").text("Deletar");

    link.append(icone);

    colunaRemover.append(link);

    linha.append(colunaConteudo);
    linha.append(colunaCreated);
    linha.append(colunaRemover);

    return linha;

}

E ele está me retornando dessa forma ele se repete os dados a cada x segundos não gostaria que repetisse:

Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
Teste Notificação    2020-03-07 00:09:21    
2 respostas

Boa noite, Victor! Como vai?

O seu código não aparenta ter nenhum problema. Se a saída é sempre a mesma é pq a sua API está sempre retornando a mesma coisa. Se não era isso que ela deveria retornar, então é no código dela que vc deverá dar uma olhada.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

solução!

Minha API está certo está retornando assim:

[{"Notifcacao":{"id":"1","conteudo":"Teste Notificação","created":"2020-03-07 00:09:21","}]

Está retornando correto o problema é o setInterval porque ele esta rodando no Document então ele sempre ta chamando a função por isso estava repetindo consegui resolver tratando utilizando um Ajax.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software