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

Código na parte do ELSE não funciona!

O código funciona perfeito até o IF, mas quando testo com o erro a mensagem não aparece. Já tentei mudar o nome da variavel, acessar o network mas nada funcionou até agora.

var botaoAdicionar = document.querySelector("#buscar-paciente");

botaoAdicionar.addEventListener("click", function(){

    var xhr = new XMLHttpRequest();

   xhr.open("GET","https://api-paci111entes.herokuapp.com/pacientes");

   xhr.addEventListener("load", function() {
    var erroAjax = document.querySelector("#ajax-erro");
    if (xhr.status == 200) {

        erroAjax.classList.add("invisivel");
        var resposta = xhr.responseText;
        var pacientes = JSON.parse(resposta);

        pacientes.forEach(function(paciente) {
            adicionaPacienteNaTabela(paciente);
        });

    } else{

        erroAjax.classList.remove("invisivel");

    }
});

xhr.send();
});
3 respostas

Fala ai Jucileia, tudo bem? Acho que o problema está no addEventListener do load.

Tente trocá-lo pelo onreadystatechange, ficando:

var botaoAdicionar = document.querySelector("#buscar-paciente");

botaoAdicionar.addEventListener("click", function(){

    var xhr = new XMLHttpRequest();

   xhr.open("GET","https://api-paci111entes.herokuapp.com/pacientes");

   xhr.onreadystatechange = function() {
    var erroAjax = document.querySelector("#ajax-erro");
    if (xhr.status == 200) {

        erroAjax.classList.add("invisivel");
        var resposta = xhr.responseText;
        var pacientes = JSON.parse(resposta);

        pacientes.forEach(function(paciente) {
            adicionaPacienteNaTabela(paciente);
        });

    } else{

        erroAjax.classList.remove("invisivel");

    }
};

xhr.send();
});

Espero ter ajudado.

solução!

Deu certo para um problema, só que quando testava sem erros, mostrava isso no console: Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse ()

Mas consegui arrumar com outro código, mas obrigado pela ajuda.

var botaoAdicionar = document.querySelector("#buscar-paciente");

botaoAdicionar.addEventListener("click", function(){

    var xhr = new XMLHttpRequest();

   xhr.open("GET","https://api-pacientes.herokuapp.com/pacientes");

   xhr.addEventListener('loadend', () => {
    var erroAjax = document.querySelector("#ajax-erro");
    if (xhr.status == 200) {

        erroAjax.classList.add("invisivel");
        var resposta = xhr.responseText;
        var pacientes = JSON.parse(resposta);

        pacientes.forEach(function(paciente) {
            adicionaPacienteNaTabela(paciente);
        });

    } else{

        erroAjax.classList.remove("invisivel");

    }
});

xhr.send();
});

Boa Jucileia, fico feliz que tenha resolvido seu problema.

Sobre o erro que estava dando:

Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse ()

Provavelmente aconteceu porque quando o JavaScript estava tentando converter a string para json o formato dela não era um JSON válido.

Vou fechar o tópico para que possamos ajudar outros alunos com problemas iguais ou parecidos.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.