I have a JavaScript file where I would like to include some php code. The problem is that I have a few defines on PHP that I would like to use on JS as well.
Is there any way of including a .js file in HTML allowing the server to first interpret it (before downloading to the client) using php?
Thanks :)
-
You mentioned that a PHP include or something appears to be causing problems for you. Care to elaborate on that?JAL– JAL2010年10月15日 14:37:25 +00:00Commented Oct 15, 2010 at 14:37
-
In the past I have actually have had coldfusion functions produce javascript functions. I found this particularly useful when I had a variable number of fields and variably named fields, and needed some browser based functionality.Jay– Jay2010年10月15日 14:39:17 +00:00Commented Oct 15, 2010 at 14:39
-
@Alex That was me being stupid with a broken require_once ;) cheersDiogoNeves– DiogoNeves2010年10月15日 15:08:01 +00:00Commented Oct 15, 2010 at 15:08
7 Answers 7
<script src="/path/to/my/file.php"></script>
In file.php you'll also want to output the correct header, before outputting anything you should have the following:
header("Content-Type: application/javascript");
EDIT: As @Tony_A pointed out, it should be application/javascript. I don't think it mattered as much when I wrote this post in 2010 :)
6 Comments
application/javascript.Create a php file called javascript-test.php
<?php
header('Content-type: application/javascript');
$php = 'Hello World';
echo "alert('$php');";
?>
And then link to your php as if it was a javascript file:
<script type="text/javascript" src="javascript-test.php" />
If you need your php file to have a .js extension, that is possible in your server configuration.
Comments
Sure, most easily by making it a js.php file.
If possible, though, consider an alternative: Fetch the PHP defines into JavaScript before including the external script file:
<script>
define1 = <?php echo YOUR_DEFINE1; ?>
define2 = <?php echo YOUR_DEFINE2; ?>
</script>
<script src="....."> // This script can now use define1 and define2
This way, the external JavaScript can still be served as a static content and doesn't need to be run through PHP. That is less resource intensive.
Comments
Not tested, but it probably works:
<script lang="text/javascript" src="path/to/your/script.php" ></script>
Try to give the script .php as file extension.
7 Comments
<?php ... ?> the rest should be untouched be the PHP interpreter... or I don't get your point. And the JS code that you produce via PHP should be valid. But PHP code itself can never be valid JS code...You can do this on a server level too. Say you're using apache, you can add this line to your configuration (even your .htaccess will do):
AddType application/x-httpd-php .js
You could also do that with css or even plain ol' html pages.
I'm sure other server software have similar capabilities.
1 Comment
<script> global_one = '<?php echo $global_one; ?>';</script>
Quick example ;) If you put this in your html <head> before all other javascript files the global_one variable will be available to all js files.
Comments
Yes, just write a php file that outputs the JavaScript and include it in your page as you normally would, like
<?php $f=40; ?>
<script type='text/javascript>
var f=<?php echo $f;?>;
</script>
The client does not care if the script file ends in .js, .php or whatever, just about the mime type and the contents.
You could also use Apache directives, perhaps in a .htaccess file, to tell it to process a certain .js file as PHP, or direct requests for filename.js to filename.php, though it's not necessary.