Estoy usando una tecnología bastante nueva llamada Astro ( https://astro.build/ ) para construir una página renderizada del lado del servidor completamente estática, sin JS.
Tengo una página con un formulario que es una entrada de texto simple, cuando el usuario lo completa y hace clic en el botón Enviar, envía una solicitud GET a una página astronómica. La URL se verá algo como esto ....
/?buscar=1234
Lo que quiero poder hacer es obtener acceso a ese parámetro de cadena de consulta para redirigir a mi usuario a otra página estática/1234.
Estoy tratando de acceder al parámetro quesrystring con Astro.request, pero el objeto, incluido el atributo de parámetros, está completamente vacío.
¿Hay alguna forma de acceder a los parámetros de cadena de consulta desde una página/archivo .astro?
Quería hacer lo mismo, pero esto parece ser un error en Astro que no proporciona parámetros de queryString, pero aquí hay una forma de implementarlo solo con Vanilla javascript, pero tenga en cuenta que esto solo se puede hacer del lado del cliente. es solo javascript...
Para la cadena de consulta:
localhost:3000/test?search=123Para obtener los parámetros:
const urlSearchParams = new URLSearchParams(window.location.search); const params = Object.fromEntries(urlSearchParams.entries());Este enfoque se puede ver en: esta pregunta también
Me comuniqué con los desarrolladores de Astro y finalmente recibí un correo electrónico. Esta funcionalidad no es posible con Astro, no es un error, sino un malentendido de mi parte sobre cómo funciona Astro. Las páginas de Astro se representan por adelantado y son totalmente estáticas.
Esto es posible con Astro y se puede hacer usando etiquetas <script></script> en un componente .astro .
Aquí hay un archivo example.astro :
--- <!-- imports go in here --> --- <script> const urlSearchParams = new URLSearchParams(window.location.search); const params = Object.fromEntries(urlSearchParams.entries()); console.log('params', params); </script> <!-- rest of your template markup --> La documentación sobre el uso de etiquetas <script></script> de esta manera con Astro se puede encontrar aquí: https://docs.astro.build/en/core-concepts/component-hydration/
(Desplácese hacia abajo hasta '¿Puedo hidratar los componentes de Astro?').
Esta característica está específicamente allí para la interactividad DOM simple o los casos en los que necesita acceso a la window o document de JavaScript.