Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

392
Visualizações
Pasar y usar datos de json a javascript

Tengo una función javascript a la que estoy llamando en una página php. También agregué un método json a esta función que extrae datos de la base de datos. Esto es lo que parece:

 $this->registerJsFile('/js/restaurant-reserve.js', ['depends' => [JqueryAsset::class]]); $this->registerJs('restaurantReserve.init('. Json::encode($restaurant->workHours) .')');

Como resultado, al final de la página, obtengo estos datos en el formulario:

 restaurantReserve.init([{"id":86,"restaurant_id":1,"day":"Mon","open":"9.30","close":"14.30","created_at":"2022-02-22 10:56:15"}])

Pero quiero usar estos datos en el propio archivo javascript, donde se encuentra la función restaurantReserve .

Porque ahora tengo que hacerlo manualmente:

 let json = [{"id":86,"restaurant_id":1,"day":"Mon","open":"9.30","close":"14.30","created_at":"2022-02-22 10:56:15"}]

¿Cómo puedo hacer que los datos json lleguen a javascript para poder usarlos? Para no escribirlo a mano.

actualizar

Una de las respuestas se me ocurrió, fue agregar esta línea, que declarará globalmente esta variable:

 $this->registerJs('let json = '. Json::encode($restaurant->workHours) .';');

Pero resulta que esta variable se declara después de la ejecución del script de este archivo restaurant-reserve.js donde se usa esta variable, y no entiendo un poco como hacerla más alta.

Aquí está mi código final en el archivo php:

 $this->registerJs('let json = '. Json::encode($restaurant->workHours) .';'); $this->registerJsFile('/js/restaurant-reserve.js', ['depends' => [JqueryAsset::class]]); $this->registerJs('restaurantReserve.init()');

Y lo que obtengo como resultado en la página, primero viene el archivo, luego esta variable:

 <script src="/js/restaurant-detail.js"></script> <script src="/js/share.js"></script> <script>jQuery(function ($) { let json = [{"id"...}] </script>

¿¿Qué se puede hacer??

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede agregar la siguiente línea en el código

 $this->registerJs('let json = '. Json::encode($restaurant->workHours) .';');

Actualizando la respuesta después de leer sus comentarios y más consultas.

Puede pasar el segundo parámetro más a la función registerJs. View::POS_READY or View::POS_BEGIN

Me gusta :

 $this->registerJs('let json = '. Json::encode($restaurant->workHours) .';', View::POS_READY);
about 4 years ago · Juan Pablo Isaza Relatório

0

El segundo argumento en registerJs está relacionado con este problema.
Es decir, el segundo argumento determina en qué posición debe insertarse el script en la página. Los valores posibles son:

 View::POS_HEAD for head section. View::POS_BEGIN for right after opening <body>. View::POS_END for right before closing </body>. View::POS_READY for executing code on the document ready event. This will automatically register jQuery and wrap the code into the appropriate jQuery code. This is the default position. View::POS_LOAD for executing code on the document load event. Same as the above, this will also register jQuery automatically.

El primer argumento es el código JS real que queremos insertar en la página. Se envolverá en una etiqueta. El segundo argumento determina en qué posición debe insertarse el script en la página.

Para scriptFiles también puede especificar el lugar y la hora para cargarlo. Según las dependencias y….
Es mejor consultar este enlace .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda