Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
ventana.ubicación.reemplazar comportamiento inesperado

Tengo un botón que, cuando se hace clic, inicia una solicitud POST a mi API. Luego quiero tomar la URL de respuesta de la llamada API y redirigirla.

Así es como se ve mi JS:

 function submitPassowrd(url) { let xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(); let u = xhr.responseText if (xhr.status === 200) { window.location.replace(u); return false } return false }

El problema es que, en lugar de redirigir a la URL desde la respuesta de la API, la está concatenando a la URL base. Entonces, si la URL es http://example.com , simplemente la agregará como: http://127.0.0.1:8081/http://example.com .

Dicho esto, cuando uso una URL codificada, funciona bien y me redirige correctamente al sitio web proporcionado en window.location.replace. Por ejemplo:

 function submitPassowrd(url) { let password = document.getElementById('password').value; let xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify(); let u = xhr.responseText if (xhr.status === 200) { window.location.replace('http://example.com'); // <<<<<<< hard-coded URL return false } return false }

Además, intenté usar window.location.href, lo que provocó exactamente el mismo comportamiento.

¿Qué puede explicar este comportamiento?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe usar window.location.href o simplemente window.location en lugar de window.location.replace para este caso de uso, en mi humilde opinión.

Dicho esto, la posible explicación para el comportamiento de .replace es que la URL está codificada y, por lo tanto, no se percibe como una URL (más bien como una cadena) y, por lo tanto, se concatena con la URL de la página actual. Puede console.log la salida de u para ver si la cadena devuelta está codificada.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda