Estoy tratando de buscar una broma usando XMLHTTPRequest de una API de generación de bromas aleatorias como práctica.
Aquí está mi código
<script> const xhr = new XMLHttpRequest(); xhr.open('get', 'https://icanhazdadjoke.com/', true); xhr.setRequestHeader('Accept', 'application/json') const joke = JSON.parse(xhr.response) xhr.onload = function () {console.log(xhr.responseText)} xhr.send(); </script>y el mensaje de error que recibo es: Uncaught SyntaxError: final inesperado de la entrada JSON en JSON.parse ()
Lo curioso es que si hago JSON.parse(xhr.response) y lo guardo en una variable, funciona perfectamente bien. ¿Qué estoy haciendo mal en mi script?
Está tratando de analizar la respuesta antes de recibir la respuesta. (AJAX es asíncrono). Debe manejar la respuesta en el controlador de onload , tal como lo hace cuando intenta iniciar sesión en la consola:
const xhr = new XMLHttpRequest(); xhr.open('get', 'https://icanhazdadjoke.com/', true); xhr.setRequestHeader('Accept', 'application/json'); xhr.onload = function () { const joke = JSON.parse(xhr.response); console.log(joke); } xhr.send();