Parse a JavaScript file through PHP

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 :)

Answers:

Answer

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.

Answer

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.

Answer

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.

Answer

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.

Answer

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.

Answer
<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 :)

Answer

<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.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.