2010-10-15 9 views
8

Tengo un archivo JavaScript donde me gustaría incluir algunos códigos php. El problema es que tengo algunas definiciones en PHP que me gustaría usar en JS también.Analizar un archivo JavaScript a través de PHP

¿Hay alguna forma de incluir un archivo .js en HTML que permita al servidor interpretarlo primero (antes de descargarlo al cliente) usando php?

Gracias :)

+0

Mencionaste que un PHP incluye o algo parece estar causando problemas para ti. ¿Le importaría detallar eso? – JAL

+0

En el pasado, realmente he tenido funciones ColdFusion para producir funciones de JavaScript. Encontré esto particularmente útil cuando tenía una cantidad variable de campos y campos con nombres variables, y necesitaba alguna funcionalidad basada en el navegador. – Jay

+0

@Alex Eso era yo siendo estúpido con un requerimiento roto; un saludo;) aplausos – DiogoNeves

Respuesta

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

En file.php también querrá dar salida a la cabecera correcta, antes de dar salida todo lo que debe tener lo siguiente:

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

EDIT: Como @Tony_A señaló, debe ser application/javascript. Creo que no le importaba tanto cuando escribí este post en 2010 :)

+3

+1 por mencionar el encabezado –

+0

genial, logré fallar algunas veces pero mi error es el que aplaudió – DiogoNeves

+0

Acabo de responder una pregunta similar a esta y se hizo referencia a esta pregunta en ella. Vi que estabas a 1 km de una insignia de Respuesta agradable, así que te ayudé. :) –

7

No se ha probado, pero probablemente funciona:

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

tratar de dar el guión .php como extensión de archivo.

+0

Sí, eso funciona bien. – JAL

+0

esto solo tendrá una posibilidad de funcionar si su código PHP es una sintaxis javascript válida. – Jay

+0

No funciona para mí pero también noté que estoy requiriendo otro php adentro que podría estar creando problemas :) – DiogoNeves

1

<script> global_one = '<?php echo $global_one; ?>';</script> Ejemplo rápido;) Si pones esto en su html <head> antes de todos los demás archivos JavaScript global_one la variable estará disponible para todos los js archivos.

0

Sí, acaba de escribir un archivo PHP que genera el código JavaScript e incluirlo en su página como lo haría normalmente, como

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

El cliente no le importa si el archivo de script termina en Js, .php o lo que sea, solo sobre el tipo de mimo y los contenidos.

También podría utilizar las directivas Apache, tal vez en un archivo .htaccess, para indicarle que procese un determinado archivo .js como PHP, o solicitudes directas de nombre de archivo.js a filename.php, aunque no es necesario.

11

Claro, más fácilmente haciéndolo un archivo js.php.

Si es posible, sin embargo, consideran una alternativa: buscar el PHP define en JavaScript antes de incluir el archivo de script externo:

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

De esta manera, el código JavaScript externo todavía se puede servir como un contenido estático y doesn' Necesito ser ejecutado a través de PHP. Eso requiere menos recursos.

6

Puede hacerlo a nivel de servidor también. Digamos que usted está usando Apache, puede añadir esta línea a su configuración (incluso su .htaccess hará):

AddType application/x-httpd-php .js

También podría hacer eso con CSS o ol páginas html, incluso sin formato.

Estoy seguro de que otro software de servidor tiene capacidades similares.

+0

Esto no es una buena idea. No solo será más lento (todos sus archivos .js serán analizados a través de PHP si contienen código o no), sino que también podría ser una vulnerabilidad de seguridad. – Cfreak

11

Crea un archivo php llamado javascript-test.php

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

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

Y luego enlazar a su PHP como si fuera un archivo javascript:

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

Si necesita su archivo php para tener una extensión .js, es posible en la configuración del servidor.

Cuestiones relacionadas