2010-10-15 13 views
8

Ho un file JavaScript in cui desidero includere del codice php. Il problema è che ho alcune definizioni su PHP che vorrei usare anche su JS.Analizza un file JavaScript tramite PHP

C'è un modo per includere un file js in HTML che consente al server di interpretarlo prima (prima di scaricarlo sul client) usando php?

Grazie :)

+0

Hai detto che un PHP include o qualcosa sembra causare problemi per te. Cura di approfondire questo? – JAL

+0

In passato ho effettivamente avuto funzioni di coldfusion che producono funzioni javascript. Ho trovato questo particolarmente utile quando avevo un numero variabile di campi e campi con nomi variabili, e avevo bisogno di alcune funzionalità basate su browser. – Jay

+0

@Alex Che ero stupido con un require_once rotto;) evviva – DiogoNeves

risposta

28
<script src="/path/to/my/file.php"></script> 

In file.php dovrete anche per mostrare gli header corretto, prima di emettere qualsiasi cosa si dovrebbe avere la seguente:

header("Content-Type: application/javascript"); 

EDIT: Come @Tony_A ha sottolineato, dovrebbe essere application/javascript. Non credo che importava tanto quando ho scritto questo post nel 2010 :)

+3

+1 per aver menzionato l'intestazione –

+0

grande, sono riuscito a fallire un paio di volte ma il mio sbaglio è hehe evviva – DiogoNeves

+0

Ho appena risposto a una domanda simile a questa e questa domanda è stata referenziata in esso. Ho visto che eri a 1 distanza da un badge Nice Answer, quindi ti ho aiutato. :) –

7

non testato, ma probabilmente funziona:

<script lang="text/javascript" src="path/to/your/script.php" ></script> 

cercare di dare allo script .php come estensione del file.

+0

Sì, che funziona bene. – JAL

+0

questo avrà solo una possibilità di funzionare se il codice PHP è valido sintassi javascript. – Jay

+0

Non funziona per me ma ho anche notato che sto richiedendo un altro php all'interno che potrebbe creare problemi :) – DiogoNeves

1

<script> global_one = '<?php echo $global_one; ?>';</script> esempio rapido;) Se metti questo nel tuo html <head> prima di tutti gli altri file javascript la variabile global_one sarà a disposizione di tutti i js File.

0

Sì, basta scrivere un file php che emette il codice JavaScript e includerlo nella tua pagina come si farebbe normalmente, come

<?php $f=40; ?> 
<script type='text/javascript> 
    var f=<?php echo $f;?>; 
</script> 

Il cliente non importa se il file di script termina in .js, .php o qualsiasi altra cosa, solo per il tipo di mimo e il contenuto.

Si potrebbe anche utilizzare le direttive di Apache, forse in un file .htaccess, per dirgli di elaborare un certo file .js come PHP, o richieste dirette per filename.js a filename.php, anche se non è necessario.

11

Certo, più facilmente rendendolo un file js.php.

Se possibile, però, prendere in considerazione un'alternativa: Fetch PHP definisce in JavaScript prima di includere il file di script esterno:

<script> 
define1 = <?php echo YOUR_DEFINE1; ?> 
define2 = <?php echo YOUR_DEFINE2; ?> 
</script> 
<script src="....."> // This script can now use define1 and define2 

In questo modo, il codice JavaScript esterno può ancora essere servito come contenuti statici e doesn' Devo essere eseguito attraverso PHP. Questo è meno dispendioso in termini di risorse.

6

È possibile farlo anche a livello di server. Dire che si sta utilizzando Apache, è possibile aggiungere questa linea alla configurazione (anche il tuo .htaccess farà):

AddType application/x-httpd-php .js

si potrebbe anche farlo con CSS o 'pagine html ol anche semplici.

Sono sicuro che altri software server hanno funzionalità simili.

+0

Questa non è una buona idea. Non solo sarà più lento (tutti i tuoi file .js verranno analizzati tramite PHP sia che contengano codice o meno) ma potrebbe anche essere una vulnerabilità di sicurezza. – Cfreak

11

Creare un file php chiamato javascript-test.php

<?php 
header('Content-type: application/javascript'); 

$php = 'Hello World'; 
echo "alert('$php');"; 
?> 

e quindi collegare al vostro PHP come se fosse un file javascript:

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

Se avete bisogno dei vostri file php per avere un'estensione .js, che è possibile nella configurazione del server.

Problemi correlati