Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Lo que hicimos en aula al buscar pacientes con AJAX.

Ya se tenía el archivo JSON de alura y se crea un nuevo archivo: buscar-pacientes.js para continuar con las buenas prácticas y se agrega como fuente al HTML.

        <script src="js/calcular-imc.js"></script>
        <script src="js/form.js"></script>
        <script src="js/eliminar-paciente.js"></script>
        <script src="js/filtrar.js"></script>
        <script src="js/buscar-pacientes.js"></script>

Ubicación y función para adicionar pacientes en el archivo: form.js

    botonAdicionar.addEventListener('click',function(event){
        event.preventDefault();//Esto previene el padrón.

        var form = document.querySelector("#form-adicionar");
        var paciente = capturarDatosPaciente(form);
            console.log(paciente);
        //var pacienteTr = ConstruirTr(paciente); Es llevada esta parte del código para la función encapsulada de adicionarPacienteEnLaTabla para luego ser reutilizada.

        var errores = validarPaciente(paciente);
        if(errores.length > 0){
             console.log('paciente incorrecto');
             exhibirMensajesErrores(errores); //Si hay errores el tamaño es mayor que 0, va entrar aquí y corta el evento y no entran los datos.
             return;
            }            //Este return vacío hace referencia a la función anónima.

        //var tabla = document.querySelector("#tabla-pacientes");
        //tabla.appendChild(pacienteTr);
        //Se esconden ambas porque pasan a la función encapsulada de adicionarPacienteEnLaTabla para luego ser reutilizada.
        //Se llama a la función de adicionarPacienteEnLaTabla(paciente);
        adicionarPacienteEnLaTabla(paciente);
        form.reset();

        //AJUSTE FINO DE LA FUNCION.
        var mensajesErrores = document.querySelector("#mensajes-errores");
        mensajesErrores.innerHTML = '';
    });

   **//ENCAPSULAMOS LA FUNCIÓN PARA SER REUTILIZADA para ingresar pacientes desde el archivo JSON**
    function adicionarPacienteEnLaTabla(paciente){
        var pacienteTr = ConstruirTr(paciente);
        var tabla = document.querySelector("#tabla-pacientes");
        tabla.appendChild(pacienteTr);
        }

    function capturarDatosPaciente(form){
        //Capturando los datos del formulario.
        var paciente = {
            nombre: form.nombre.value,
            peso: form.peso.value,
            altura: form.altura.value,
            gordura: form.gordura.value,
            imc: calcularIMC(form.peso.value,form.altura.value),
        } 
            return paciente;

El código para conectar el servidor externo (API) del archivo JSON con nuestro programa.

var botonBuscar = document.querySelector("#buscar-paciente");
//NUESTRO CÓDIGO
//Conectarse a un servidor externo (API) y realizar una importanción de datos de una archivo JSON.

//AJAX hace una requisición asíncrona.
//Para la requisición vamos a usar un objeto de JS que se llama XMLHttpRequest.

//ENCASULAR LA FUNCIÓN en form.js Y REUTILIZARLA, para agregar pacientes.

botonBuscar.addEventListener('click',function(){
    console.log('Buscando pacientes');
    var xhr = new XMLHttpRequest;
    xhr.open('GET','https://alura-es-cursos.github.io/api-pacientes/pacientes.json');
    xhr.addEventListener('load',function(){
        var errorAjax = document.querySelector("#error-ajax");
    //CAPTURANDO ERRORES DE REQUERIMIENTO.
        if(xhr.status == 200){
            errorAjax.classList.add("invisible");
            var respuesta = xhr.responseText;
        //Conversión de datos.
            var pacientes = JSON.parse(respuesta);
        //Usamos el forEach para iterar todos los pacientes con su función como paciente como parámetro.
            pacientes.forEach(function(paciente){
                adicionarPacienteEnLaTabla(paciente); //Ya encapsulada en form.
                console.log(paciente);
            });
        }else{
            errorAjax.classList.remove("invisible");//Con ello el usuario ve el mensaje de error.
            console.log(xhr.status);
            console.log(xhr.responseText);
        }
    });
    xhr.send();
});

Finalmente muestro como se conformó en HTML los datos para el Span que permite capturar el error de requerimiento. Entre el final de la tabla y antes del botón buscar pacientes.

                    </tbody>
                </table>

                <span id="error-ajax" class="invisible">Error al buscar los pacientes</span>

                <button id="buscar-paciente" class="botón bto-principal">
                    Buscar Pacientes
                </button>
1 respuesta
solución!

Hola Yeimer, espero que estés bien! Gracias por compartir tu código con nosotros. Si tiene alguna pregunta sobre el contenido del curso, estamos aquí para ayudarlo. ¡Sigue practicando! ¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓.