下面是我用jquery和PHP看到的代码中的一个小片段。
注意第5行的PHP部分,我通常把我的javascript放到单独的文件中,这样我怎样才能将我的JS保存在单独的文件中,但是在需要时仍然使用PHP,如下所示?
//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) {
答案 0 :(得分:9)
我通常做的是:
例如,我想我会有这样的事情:
my-file.php:
var thisIsMyJSVar = '<?php echo $test; ?>';
因此,在PHP中,我们声明变量并设置其值。这是“动态”部分。
,在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) {
这里,在静态JS文件中,我们只使用该值;这里的任何内容都不是动态的,客户端可以缓存此文件 - 不能在每个页面上重新下载。
这个想法的问题是JS文件依赖于在PHP文件中完成的一些初始化: - (
所以,在JS文件中有一个“默认值”可能是个好主意,以防万一......
此外,你必须有一个很好的命名约定,没有几个文件使用/声明/取决于相同的JS变量;实际上,将所有“配置变量”放在一个javascript对象中,不污染全局命名空间可能是一个好主意......
答案 1 :(得分:3)
如果你想让你的Javascript与PHP分开,那么使用PHP文件生成一小部分Javascript来设置变量。然后使用.js文件中的那些变量:
HTML:
<script>
var INITIAL_POSTS = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>
<script src="my.js">
my.js Javascript文件:
//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) {
答案 2 :(得分:1)
你总是可以让php“写”javascript文件而不是静态 - 没有什么可以阻止<script src="script.php">
......
答案 3 :(得分:0)
有两种基本方法可以处理不需要混合使用JavaScript和PHP的方法:
get_posts(0,$_SESSION['posts_start']);
)写入表单上的隐藏输入(或页面上的其他位置)。然后,JavaScript可以轻松访问通常情况下,如果访问者浏览页面时这种值不会改变(或者您不关心它是否发生变化,因为您不会动态更新其他内容),请直接将其写入页面。
然后JavaScript和jQuery可以使用
之类的代码轻松获取该值var initialPosts = $("#that-hidden-field-mentioned-earlier").val();
答案 4 :(得分:0)
直到有人拒绝更清洁的答案:
您可以在php / html文件中定义全局js变量,并在脚本中引用它:
的PHP / HTML:
<script>
var global = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;
</script>
JS:
...
var initialPosts = global;
...
答案 5 :(得分:-5)
这应该有用,我的意思是文件.php? 由于JS是客户端,因此在浏览器处理客户端javascript之前,应该通过php引擎处理php吗?