Tengo este ejemplo práctico de cómo usar POST y colocar el html generado por el servidor en una nueva ventana:
const response = await this.axiosInstance.post(url, postData) const htmlResponse = response.data const newWindow = window.open() newWindow.document.write(htmlResponse)Sin embargo, no estoy seguro de si esta es la mejor o incluso la forma correcta de hacerlo. Veo algunas advertencias con esto. Recibo una advertencia en la última línea de que newWindow es posiblemente ' null '. Si cambio a TypeScript, tampoco estoy seguro del tipo de htmlResponse . Asumiría Document , pero write() solo admite string , por lo que podría ser la clasificación correcta.
¿Hay una mejor manera de poner el contenido de una solicitud posterior en una nueva ventana?
Actualización: el tipo de contenido es de tipo text/html; charset=UTF-8 , no estoy seguro si cambia algo.
Lo que tiene allí podría ser suficiente para su caso de uso. Se podría recomendar esperar algún tipo de evento listo antes de manipular el DOM.
const newWindow = window.open(); newWindow.onload = (event, f, g, h) => newWindow.document.write('Do great things.');Una solución mucho mejor podría ser obtener datos reales en lugar de una cadena HTML del servidor, crear una página de plantilla para recibir los datos y representar una página con un buen formato.
La API Window.postMessage() podría usarse para enviar datos entre ventanas principales y secundarias. Esto es especialmente útil si necesita eludir la política del mismo origen .
He hecho varias suposiciones y es posible que esta sugerencia no funcione para su caso de uso.