Estoy tratando de mostrar estos datos json en un cuadro de alerta de javascript, pero lo muestra dos veces (mismo contenido). Está funcionando, pero no sé por qué muestra dos alertas. (javascript no es mi idioma preferido).
Esta es la respuesta de la URL llamada:
{ "type": "error", "response": { "message": "Could not start app" } }Este es el código que estoy usando:
<script type="text/javascript"> function call() { const Http = new XMLHttpRequest(); const url='https://url_to_get_the_response'; Http.open("GET", url); Http.send(); Http.onreadystatechange = (e) => { if (Http.responseText) { alert(Http.responseText); } } } </script>Y recibo dos alertas, ambas contienen lo mismo (el resultado .json). Solo quiero uno de ellos.
He intentado agregar un return; y break call; en la sección if (Http.responseText) . Agregando el return; en la declaración if no hizo nada y agregó la break call; dejó de funcionar.
¿Algún consejo sobre esto? Gracias.
Tu enfoque es correcto. El evento onreadystatechange se activa varias veces, ya que el atributo readyState cambia desde el principio hasta el final de una llamada a la API.
Al agregar la condición if para el readyState apropiado y el valor de status que viene en el objeto XMLHttpRequest . Resuelve este problema.
Puede leer más sobre esos atributos aquí readyState , status
function call() { const Http = new XMLHttpRequest(); const url='https://jsonplaceholder.typicode.com/todos/1'; Http.open("GET", url); Http.send(); Http.onreadystatechange = (e) => { if (Http.readyState == 4 && Http.status == 200 && Http.responseText) { alert(Http.responseText); } } } <button onclick='call()'>Call</button>