Reputation: 48983
Below is a small snippet from a code I saw with jquery and PHP.
Notice the PHP part on line 5, I generally put my javascript into separate files so how would I be able to keep my JS in separate files but still use PHP when needed like below?
//when the DOM is ready
$(document).ready(function(){
//settings on top
var domain = 'http://davidwalsh.name/';
var initialPosts = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
//function that creates posts
var postHandler = function(postsJSON) {
$.each(postsJSON,function(i,post) {
Upvotes: 8
Views: 3711
Reputation: 57678
Until someone drops in a cleaner answer:
You can define a global js variable in your php/html file, and refer to it in your script:
php/html:
<script>
var global = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>
js:
...
var initialPosts = global;
...
Upvotes: 0
Reputation: 1947
You can always have the php "write" the javascript file instead of having it be static- there's nothing to stop <script src="script.php">
...
Upvotes: 1
Reputation: 37813
There are two basic ways to handle that that don't require mixing JavaScript and PHP at all:
get_posts(0,$_SESSION['posts_start']);
into a hidden input on the form (or elsewhere on the page). JavaScript can then access this readilyGenerally, if it's the sort of value that won't change while the visitor is browsing the page (or you don't care if it changes, since you won't be updating other content dynamically), write it directly onto the page.
JavaScript and jQuery can then fetch that value easily with code like
var initialPosts = $("#that-hidden-field-mentioned-earlier").val();
Upvotes: 0
Reputation: 26576
This should work, i mean is the file .php? As the JS is client side, the php should be processed through the php engine BEFORE the browser processes the client side javascript?
Upvotes: -5
Reputation: 376032
If you want to keep your Javascript separate from your PHP, then use a PHP file to generate a small chunk of Javascript just to set variables. Then use those variables from your .js file:
HTML:
<script>
var INITIAL_POSTS = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>
<script src="my.js">
my.js Javascript file:
//when the DOM is ready
$(document).ready(function(){
//settings on top
var domain = 'http://davidwalsh.name/';
var initialPosts = INITIAL_POSTS;
//function that creates posts
var postHandler = function(postsJSON) {
$.each(postsJSON,function(i,post) {
Upvotes: 3
Reputation: 401182
What I generally do is :
For instance, I would have something like this, I suppose :
my-file.php :
var thisIsMyJSVar = '<?php echo $test; ?>';
So, in PHP, we declare tha variable and set its value. This is the "dynamic" part.
and, in my-file.js :
//when the DOM is ready
$(document).ready(function(){
//settings on top
var domain = 'http://davidwalsh.name/';
var initialPosts = thisIsMyJSVar; // Use the JS variable declared in the PHP file
//function that creates posts
var postHandler = function(postsJSON) {
$.each(postsJSON,function(i,post) {
Here, in the static JS file, we only use the value ; nothing here is dynamic, and this file can be cached by the client -- to not be re-downloaded on each page.
The problem with that idea is the JS file depends on some initialisation done in the PHP file :-(
So, it might be a good idea to have a "default value" in the JS file, just in case...
Also, you have to have a good namming convention, to not have several files using/declaring/depending on the same JS variable ; it might be a good idea, actually, to put all your "configuration variables" inside a single javascript object, to not pollute the global namespace...
Upvotes: 10