Sé que esto es un duplicado, pero no puedo encontrar mi respuesta entre las respuestas de otras preguntas, así que por favor ayuda.

Estoy tratando de obtener una matriz php en una matriz javascript. Mi editor de código (phpStorm) da el error en el código de que $survey es una variable indefinida, mi navegador da el mismo error en el registro de la consola, excepto en el archivo javascript.

He intentado dd($survey), existe y lo uso en todo mi archivo html. También he intentado json_encode la matriz php, da los mismos errores.

Dd ($ encuesta):

"data" => array:11 [
"id" => 2315
"name" => ""
"formFolderId" => 703
"createdAt" => "2019-10-14 14:55:03"
"updatedAt" => "2019-10-14 14:55:03"
"formCategories" => array:11 [
  0 => array:7 [
    "id" => 14048
    "name" => ""
    "formId" => 2315
    "createdAt" => "2019-10-14 14:55:03"
    "updatedAt" => "2019-10-14 14:55:03"
    "formQuestions" => array:4 [
      0 => array:26 [
        "id" => 158233
        "name" => ""
        "formCategoryId" => 14048
        "type" => "radio"
        "createdAt" => "2019-10-14 14:55:03"
        "updatedAt" => "2019-10-14 14:55:03"
        "formOptions" => array:6 []
]
]

Mi cabeza html:

<script>
    let wholeSurvey = <?php $survey['data'] ?> ;
</script>

Así que supongo que mi pregunta es cómo puedo obtener $survey en wholeSurvey.

Perdón por errores gramaticales o de ortografía.

0
SilkeNL 21 oct. 2019 a las 11:22

4 respuestas

La mejor respuesta

Controlador:

return view('view', compact('survey'));

Su plantilla de cuchilla:

const wholeSurvey = {!! json_encode($survey) !!},
0
AnsellC 21 oct. 2019 a las 08:30
<script>
        let wholeSurvey = JSON.parse('<?php echo json_encode($survey['data']); ?>');
</script>
0
Konrad Słotwiński 21 oct. 2019 a las 08:29

Te falta echo, también la codificación json:

const survey = <?php echo json_encode($survey["data"]);?>;
0
Chemaclass 21 oct. 2019 a las 08:36

Puedes usar la directiva blade @json:

<script>
  let wholeSurvey = @json($survey['data']);
</script>
0
Krzysztof Chełchowski 21 oct. 2019 a las 08:40