我(绝对php初学者)在xhtml严格页面的顶部给出了一个基于日期和时间的不同变量的脚本:
<?php
$var1="2011,9,31,18,0,0";
[...]
?>
在html体内,我有一个javascript,目前就是这样开始的:
<script type="text"/javascript">
dateFuture = new Date(<?php echo $var1; ?>);
[...]
</script>
是否可以将javascript设为外部,但仍然从索引页面的顶部拉出变量$ var1,然后让它在索引页面上显示与当前相同的输出?
我找到了一个例子,其中外部.js的开头应该是这样的:
dateFuture = new Date(<?php include("/index.html");echo $var1;?>);
不幸的是,这似乎不起作用。 这有什么可能的解决方案吗? 任何帮助是极大的赞赏。 提前谢谢。
答案 0 :(得分:3)
是。使javascript变量全局,您可以在外部js文件中访问它。 像这样的东西
<script type="text/javascript">
var dateFuture = new Date(<?php echo $var1; ?>);
</script>
<script src="your-external-js-file.js" type="text/javascript"></script>
在your-external-js-file.js中,您可以访问dateFuture。
或者你可以将代码封装在类的外部js文件中,并将日期从php作为参数传递给该类的构造函数。
答案 1 :(得分:1)
外部JavaScript文件本身可以指向PHP文件 - 前提是PHP文件输出有效的JavaScript。这样,您可以执行以下操作:
myJS.php:
<?php
// Initialize your PHP variable(s) here, or include the PHP script(s) to do so.
$var1="2011,9,31,18,0,0";
...
?>
dateFuture = new Date(<?php echo $var1; ?>);
在您的HTML文件中:
<script type="text/javascript" src="myJS.php"></script>
由于myJS.php
的输出纯粹是JavaScript代码,因此文件扩展名对浏览器无关紧要。与您的PHP代码当前输出纯HTML代码的方式相同,您的浏览器也了解如何解析它。
答案 2 :(得分:1)
如果您的目的是将javascript代码移动到外部脚本以实现更好的模块化,您可以将其移动到php文件,然后将php文件作为javascript引用。
<script type="text/javascript" src="myscript.php"></script>
在myscript.php里面 -
<?
Header("content-type: text/javascript");
dateFuture = new Date(<?php echo $var1; ?>);
?>
答案 3 :(得分:0)
虽然Jonathan Newmuis和RonakG给出的答案是完全可以接受的并且会起作用,但这个答案的目的是回答你的问题,尽可能接近你现在的设置。但是,我个人同意RonakG的回答。
如果您在服务器上使用Apache,请将以下行添加到.htaccess
文件中:AddType application/x-httpd-php .js
。或者,如果您担心性能,则可以将该代码添加到Apache配置中。
该代码的目标实质上是说PHP应该解析所有以“.js”结尾的文件,就像它们是“.php”一样
答案 4 :(得分:0)
是。有可能的。但是,您将不得不将javascript文件转换为php文件,或者强制使用Apache或您使用的任何Web服务器来运行javascript作为php(完全无害,因为<?php ... ?>
之外的所有代码都只是写的输出)。
在my-external-js.php
或my-external-js.js
(无论您选择哪个,但我会推荐前者,因为它需要更少的配置):
<?php require_once 'file-which-defines-var1.php'; ?>
dateFuture = new Date("<?php print $var1; ?>");
注意:您应该始终使用require_once
而不是include
或require
,这样相同的文件永远不会包含两次,这会导致混乱的变量和碰撞的函数/类。另外,require
和require_once
案例如果无法加载脚本会导致致命错误,而include
和include_once
则不会。