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

Dúvida em relação ao .send() e o evento de Load

Estou com uma dúvida em relação ao método .send() e o evento de load.

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

botaoAdicionar.addEventListener("click", function() {
    var xhr = new XMLHttpRequest();

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

    xhr.addEventListener("load", function() {

        if (xhr.status == 200) {
            var resposta = xhr.responseText;
            var pacientes = JSON.parse(resposta);

            pacientes.forEach(function(paciente) {
                adicionaPacienteNaTabela(paciente);
            });
        } else {
            console.log(xhr.status);
            console.log(xhr.responseText);
        }
    });

    xhr.send();
});

Segundo a explicação do Douglas, após realizar a configuração da URL e definir qual método HTTP utilizar, devemos usar o evento de LOAD para carregar a resposta. Eu não entendi por que ele chama o evento de load antes de invocar o método .send() sendo que ele que envia a resposta da requisição.

3 respostas
solução!

Oi Leonardo.

O evento load será acionado quando o request for completado. Note, request completado não quer dizer que o servidor já retornou a resposta. Isso quer dizer apenas que o request foi feito, aí o load é carregado e configurado. Contudo, essa é uma configuração que só ocorrerá depois que o send for invocado. O método de send envia o request em si. Ou seja, primeiro você configura o que será feito quando o request for enviado, depois usa o send pra enviar o request de fato. Até o momento send, nada foi enviar para o servidor.

Ahhh agora entendi. O request só é feito quando o .send() é chamado. Muito obrigado :)

Isso aí :)

Depois dê uma olhada na resposta desse tópico:

https://stackoverflow.com/questions/15418608/xmlhttprequest-level-2-determinate-if-upload-finished

O autor perguntou sobre upload. Independente disso, na resposta mais votada, o cara lista vários eventos para utilização, caso seja necessário. Eu nunca usei a maioria, pra ser sincero, mas é legal saber que existe rs.

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