Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não está entrando no Else

Meu código funciona bem quando a URI está correta, porém quando testo com uma URI incorreta para ver o fluxo do tratamento de erro, o código não entra no ELSE. Testei exatamente com o mesmo código do professor e também n~da o mesmo erro na console sem fazer o que está descrito no else. A console mostra:

buscar-pacientes.js:21 GET https://api--pacientes.herokuapp.com/pacientes 404 (Not Found)
(anonymous) @ buscar-pacientes.js:21
index.html:1 Failed to load https://api--pacientes.herokuapp.com/pacientes: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404.

O código é:

var buscarPacientes = document.querySelector("#buscar-pacientes");

buscarPacientes.addEventListener("click", function() {
     //Utilização de tecnica AJAX.
    var xhr = new XMLHttpRequest();

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

    xhr.addEventListener("load", function() {
        var erroAjax = document.querySelector("#erro-ajax");
        if (xhr.status == 200) {
            erroAjax.classList.add("invisivel");
            var resposta = xhr.responseText;
            var pacientes = JSON.parse(resposta);
            adicionaPacienteNaTabela(pacientes);  //Aqui eu não uso for porque no meu método eu já faço a iteração inserindo os pacientes.
        } else {
            erroAjax.classList.remove("invisivel");
        }
    });

    xhr.send();
});

Alguém da uma luz?

1 resposta
solução!

Descobri o problema. Eu estava testando a URI errada porém, não passando o recurso errado ex: ("https://api-pacientes.herokuapp.com/pacientes55555"). Mas, estava passando o domínio errado ex:("https://api--pacientes.herokuapp.com/pacientes" com 2 traços --).

Dessa forma, por razões de segurança o navegador restringe a solicitação HTTP solicitada por script, no meu caso com XMLHttpRequest.

Quando eu acertei o domínio e errei apenas o recurso: /pacientes1111aí foi possível o código tratar o erro.

https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS