Soy un novato en javascript e hice este script que se ejecuta en la carga de la página:
function checkItem(itemToCheck) { console.log(`Checking if ${itemToCheck} is checked`) var url = `https://list.s40.repl.co/api/get-status/${itemToCheck}`; var xhr = new XMLHttpRequest(); xhr.open("GET", url); xhr.setRequestHeader("Accept", "application/json"); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { console.log(xhr.status); console.log(xhr.responseText); }}; xhr.send(); if (status === 200) { console.log("The request worked") if (response == `True`) { console.log(`${itemToCheck} is true`) var checkbox = document.getElementById(`${itemToToggle}-checkbox`) //Control the checkbox } } }Nunca muestra el texto "La solicitud funcionó", y parece ser porque xhr.status y xhr.responseText están en blanco fuera de la función en la que se encuentran. No sé nada sobre javascript y no sé cómo arreglar este. Todo lo que quiero hacer es poder solicitar datos y luego hacer algo con ellos si es igual a verdadero. Por favor ayuda
Obtengo xhr.status == 0 , lo que significa que la solicitud falló. Cuando ejecuto la solicitud a través del cartero, aparece un error de SSL (el certificado ha caducado). Probablemente por eso falla la solicitud.
Sin embargo, ejecutarlo con fetch no es un problema. Así que buscar parece omitir el error de SSL. Sin embargo, no parece haber una manera de hacer que XMLHttpRequest ignore este error de SSL.
fetch(`https://list.s40.repl.co/api/get-status/2`) .then(res => res.text()) .then(console.log)Le aconsejo que verifique si solo puede usar fetch para la tarea. Solo los navegadores muy antiguos no lo admiten: https://caniuse.com/fetch
Es de nivel superior y async por naturaleza. Por lo general, debe preferir el código async al síncrono al escribir para el navegador, ya que el código síncrono bloquea la ejecución rápidamente y ralentiza la aplicación del navegador o incluso hace que se congele.