Domanda Accedi a PHP var da file javascript esterni


Posso accedere a una var PHP con Javascript come questo:

<?php
    $fruit = "apple";
    $color = "red";
?>

<script type="text/javascript">
    alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>

Ma cosa succede se voglio usare un file JS esterno:

<script type="text/javascript" src="externaljs.js"></script>

externalJS.js:

alert("color: " + "<?php echo $color; ?>");

44
2018-05-28 12:13


origine


risposte:


In realtà non accedici, lo inserisci nel codice javascript quando servi la pagina.

Tuttavia se il tuo altro javascript non proviene da una fonte esterna puoi fare qualcosa del tipo:

<?php
    $color = "Red";
?>
<script type="text/javascript">var color = "<?= $color ?>";</script>
<script type="text/javascript" src="file.js"></script>

e poi nel file.js usa il colore in questo modo:

alert("color: " + color);

72
2018-05-28 12:16



Puoi anche accedere ai dati dallo script php in Javascript (userò jQuery qui) come questo

Crea un campo nascosto di input all'interno del tuo file php come questo

<input type="hidden" id="myPhpValue" value="<?php echo $myPhpValue ?>" />

nel tuo file javascript:

var myPhpValue = $("#myPhpValue").val();
//From here you can the whaterver you like with you js Value
if(myPhpValue != ''){
//Do something here
}

Questo farà anche il lavoro :)


9
2018-06-19 15:32



Quello che ho visto fare è lasciare che i file .js scorrano attraverso l'interprete php. Che non posso raccomandare 

Quello che raccomando è il recupero dei valori tramite AJAX e il file PHP restituire il valore al file JS. Che è un metodo molto più pulito


7
2018-05-28 12:17



Prima di tutto devi capire che nessun programma può effettivamente avere accesso alla variabile dell'altro programma.

Quando lo realizzi, il resto è semplice.
Puoi impostare una variabile js nel file principale e quindi includere il tuo js esterno, oppure rendere questo js dinamico esterno, generato anche da PHP


4
2018-05-28 12:19



Quello che vorresti è chiamato Asynchronous JavaScript and XML (AJAX): http://www.w3schools.com/ajax/default.aspa

Fondamentalmente, immagina di essere in grado di inviare messaggi dal codice JavaScript del client agli script PHP sul server. Nell'esempio che hai fornito (externaljs.js), avresti lo script chiedere al server che cosa è $ color, via HTTP. Puoi anche puntare il tag script su uno script PHP che genera il codice JavaScript che desideri. Dipende da cosa devi fare.

Aiuta a comprendere il controllo dell'inquinamento, la verifica dei dati e la sicurezza;)


4
2018-05-28 12:21



Come dicono gli altri, javascript non ha accesso alle variabili php. Tuttavia, ha accesso al DOM. Quindi, puoi usare php per aggiungere attributi ad alcuni elementi della pagina. E poi puoi accedere a quegli attributi con javascript.

per esempio. <div id='apple' class='red'> è completamente disponibile per javascript


3
2018-05-28 12:25



externaljs.js è un file statico. Ovviamente non può accedere ai dati PHP. L'unico modo per passare i dati PHP a un file js è alterare fisicamente il file scrivendogli nello script PHP, sebbene questa sia una soluzione disordinata al meglio.

Modifica in risposta alla risposta di Ólafur Waage: Immagino che scrivere sul file js non sia il solo modo. Passare il js attraverso l'interprete PHP non mi è mai passato per la mente (per una buona ragione).


1
2018-05-28 12:16



<script type="text/javascript" src="externaljs.js"></script>

Potresti cambiarlo

<script type="text/javascript" src="externaljs.php"></script>

E lo script PHP potrebbe semplicemente scrivere JavaScript in questo modo:

<?php
$fruit = "apple";
echo 'var fruit = '.json_encode($fruit);
...

Sebbene usare AJAX come detto Sepehr Lajevardi sarebbe molto più pulito


1
2018-05-28 12:28



La soluzione Don è buona, inoltre se si desidera utilizzare un array php in una javascipt esterna, ciò può aiutare:

PHP:

<?php
    $my_php_array = [];
?>     

HTML:

<script type="text/javascript"> var my_js_array = <?php echo json_encode($my_php_array);?> ; </script>
<script src = "../public/js/my-external-js.js"></script>

Javasript: (Ora puoi usare l'array come un normale array Javascript)

 my_js_array[0] 
 my_js_array.length

1
2017-07-22 18:56



Non puoi farlo e non provare come questo non è un approccio raccomandato, tuttavia puoi passare le variabili php come parametri di funzione per funzionare scritti in js esterni


0
2018-05-28 12:17



2017-2018 e sopra soluzione: 

Dal momento che nessuno lo ha portato ancora e immagino che nessuno abbia pensato di combinare le funzioni base64_encode e json_encode ancora, potresti anche inviare variabili PHP Array come quella:

index.php

<?php
      $string = "hello";
      $array = ['hi', 'how', 'are', 'you'];
      $array = base64_encode(json_encode($array));

Quindi è possibile caricare il file js desiderato con il parametro per una stringa di query come questa:

echo '<script type="text/javascript" src="js/main.php?string='.$string.'&array='.$array.'">';

Poi js/main.php sembrerà questo per esempio. Puoi testare le tue variabili in questo modo:

js / main.php

    <?php
    if ($_GET['string']) {
        $a = $_GET['string'];
    }
    if ($_GET['array']) {
        $b = $_GET['array'];
    }
    $b = json_decode(base64_decode($b));

    echo 'alert("String $a: + '.$a.'");';
    echo 'alert("First key of Array $array: + '.$b[0].'");';
    exit();
    ?>

Quanto segue verrà emesso quando apri il tuo index.php. Quindi vedi, non ti apri js/main.php e hai ancora la funzionalità javascript da esso.

enter image description here


0
2017-10-06 07:40