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) {
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...
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) {
你总是可以让php“写”javascript文件而不是静态 - 没有什么可以阻止<script src="script.php">
...
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 readily Generally, 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();
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;
...
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?
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.