passare array da php a javascript

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
devo passare array di tipo (string) e (float), per esempio, in php genero

PHP:
$SPW_xAxisCat[] = (string)$data[$i][0];

poi in javascript, dichiarato all'interno di html, richiamo l'array con

Codice:
    <script type="text/javascript">
$(function () {
  var SPW_Title    = '<?php echo $SPW_Title; ?>'
  var SPW_SubTitle = '<?php echo $SPW_SubTitle; ?>'
  var SPW_xAxisCat = <?php echo json_encode($SPW_xAxisCat); ?>;

ed il risultato è positivo, lavora senza errori

ora racchiudo lo stesso javascript in un file .js e lo richiamo in html con

Codice:
<script type="text/javascript" src="../js/graph_a_intraday.js"></script>

il risultato è negativo, viene segnalato

SCRIPT1002: Errore di sintassi
File: graph_a_intraday.js, riga: 4, colonna: 22

per la riga

Codice:
var SPW_xAxisCat = <?php echo json_encode($SPW_xAxisCat); ?>;

ho provato a racchiudere tra apici,
Codice:
'<?php echo json_encode($SPW_xAxisCat); ?>'
ma,
il tutto si trasforma in stringa di caratteri e non viene utilizzato correttamente.

come posso far convivere le array ed i file .js ?

grazie per i vostri suggerimenti
Marino
 
Ciao, non puoi scrivere codice php in un file con estensione javascript: non verrà interpretato.
Puoi usare gli array di javascript oppure tenere il codice nel file con estensione php.
 
Puoi usare gli array di javascript oppure tenere il codice nel file con estensione php

grazie per la risposta, puoi per cortesia farmi un esempio per i due casi ?

sono più interessato ad utilizzare un sistema che mi permetta di "parametrare" il nome del file
in modo da utilizzare un unico html per differenti grafici

grazie ancora
Marino
 
per maggior chiarezza,
ho diversi file con estensione php, che vengono inclusi come detto nel primo post,
che contengono codice html, uguali nella loro struttura, dove cambia solo la parte javascript,

HTML:
<html>
  <head>
    <title>SolarPower Data Analysis</title>
    <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8">

    <script type="text/javascript" src="../Highcharts/jquery.min.js"></script>
    <script type="text/javascript">
$(function () {
  var SPW_Title    = '<?php echo $SPW_Title; ?>'
  var SPW_SubTitle = '<?php echo $SPW_SubTitle; ?>'
  var SPW_xAxisCat = '<?php echo json_encode($SPW_xAxisCat); ?>';

  var SPW_y0type   = '<?php echo $SPW_y1type; ?>'
  var SPW_y0title  = '<?php echo $SPW_y1title; ?>'
  var SPW_y0ttip   = ' <?php echo $SPW_y1ttip; ?>'
  var SPW_y0color  = '#89A54E'
  var SPW_y0min    = ' <?php echo $SPW_y1min; ?>'
  var SPW_y0data   = '<?php echo json_encode($SPW_y1data); ?>';
........
........
                yAxis: 0,
                name: SPW_y0title,
                color: SPW_y0color,
                type: SPW_y0type,
                data: SPW_y0data,
                marker: {
                    enabled: false
                },
                tooltip: {
                    valueSuffix: SPW_y0ttip
                }
            }]
        });
    });
    </script>
  </head>
  <body>
    <script src="../Highcharts/highcharts.js"></script>
    <script src="../Highcharts/exporting.js"></script>

    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

    <br /><br />
    <a href="graph.php">[back to graph selection]</a><br />

---> funzionalità da aggiungere

  </body>
</html>

vorrei, se possibile, creare un template php (html) che conterrà tutte le funzionalità ed in esso,
richiamare in modo parametrico il file .js, specifico, che fornisce "solo" i dati da visualizzare
facendo da interfaccia con highcharts

una soluzione "scarsa" consiste nell'assemblare, al momento, il file da utilizzare
ma spero vi sia un modo megliore per gestire la situazione

allego un grafico, giusto per vedere il risultato
grazie dell'aiuto
Marino
 

Allegati

Vediamo se ho capito:
tu recuperi i dati da mostrare tramite delle funzioni php (probabilmente query su un database).
i dati recuperati devi darli in pasto ad un plugin jquery che ti crea il grafico.
Se così io richiamerei i file php con ajax; il php si occuperà di creare il codice javascript necessario che verrà eseguito dalla funzione eval() messa nel success della chiamata
Codice:
 $.ajax({
      type: "POST",
      url: "pagina.php",
      success: function(response){
                 eval(response);
      }
});
 
grazie criric,

non sono riuscito ad usare il tuo suggerimento Ajax, non alla portata delle mie conoscenze,
ma questa mattina si è svegliato il neurino rimasto, (chiamarlo neurone è troppo ... )

così ho provato la soluzione più banale ...

PHP:
require_once "func_".$func_list[$scelta].".php"; <<-- includo la funzione specifica del grafico scelto, che,
call_user_func($func_list[$scelta]); <<-------------- estrae dati dal db e fa qualche calcolo 
$js_script = $js_list[$scelta]; <<------------------- scelgo lo script js
require_once "../forms/graph.php"; <<---------------- utilizzo sempre lo stesso form con js diverso
HTML:
<!DOCTYPE html>
  <head>
    <title>SolarPower Data Analysis</title>
    <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8">

    <script type="text/javascript" src="../Highcharts/jquery.min.js"></script>
    <script type="text/javascript">

<?php require_once '../js/'.$js_script; ?> <<-------- salute al neurino !

    </script>
  </head>
  <body>
    <script src="../Highcharts/highcharts.js"></script>
    <script src="../Highcharts/exporting.js"></script>
    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
    <br /><br />
    <a href="graph.php">[back to graph selection]</a><br />
  </body>
</html>
funziona in modo di...vino (bicchiere con cui ho brindato)
grazie ancora, ciao
Marino
 

Discussioni simili