How to execute / run PHP code inside JavaScript files?

by Yang Yang on July 9, 2010

Static files of JavaScript would survive most applications but sometimes the ability to include PHP code inside JavaScript scripts and generate the content of the script files on the fly by PHP is a better option. How does one do that?

The simplest solution is to just include PHP code inside the <script></script> section of your HTML templates / web pages because chances are, the file extension is .php:

<script>
var jsVar = "<?php echo $phpVar ?>";
</script>

Even if it’s not ending in .php, such as in .html or .htm, you can configure your server to parse all .html or .htm files for any PHP code, though with a little extra server burden.

Another solution for this is to make your server parse all files ending in .js. Just create a .htaccess if it doesn’t exist in the directory in which you wish to include and run PHP code inside all .js files. Add these lines at the end of .htaccess:

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Now you can add all the PHP code you can inside any JavaScript files with a .js extension, the server will automatically parse and run them when the client side requests the file.

Sam B July 18, 2010 at 1:33 am

You could also create a file with a .php extension that returns all the proper headers, and then alias it with mod_rewrite.

This is an alternative to configuring your server to parse .js files if you don’t have the ability to do this.

Ranjit (Website designer Delhi) October 20, 2010 at 11:56 am

the best method good bro

Umar Farooque June 2, 2012 at 3:01 pm

I’ve got an easy way without disturbing the .htaccess file. Is is very easy, just see how this works…

//Here’s how to call a php file as javascript file

//And this is the code of some_file.php file

Mano Senaratne August 6, 2012 at 10:16 pm

Hey, thanks a lot. This saved me a lot of time in my project. Great job!

Zeeshan August 10, 2012 at 4:56 pm

Thanks! Worked in codeigniter too 🙂

Comments on this entry are closed.

{ 10 trackbacks }

Previous post:

Next post: