I(绝对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,然后让它在索引页上显示与当前相同的输出?
我发现了一个例子,external.js的开头应该是这样的:
dateFuture = new Date(<?php include("/index.html");echo $var1;?>);
不幸的是,这似乎不起作用。对此有什么可能的解决方案吗?非常感谢您的帮助。提前谢谢。
是。将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>
在您的外部js-file.js中,您可以访问dateFuture。
或者,您可以将外部js文件中的代码封装在一个类中,并将php中的日期作为参数传递给该类的构造函数。
外部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代码的方式相同,您的浏览器也了解如何解析这些代码。
如果您的目的是将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; ?>);
?>
虽然Jonathan Newmuis和RonakG给出的答案是完全可以接受的,并且会起作用,但这个答案的目的是尽可能接近您现在的设置来回答您的问题。不过,我个人同意罗纳克的回答。
如果您在服务器上使用Apache,请在.htaccess
文件中添加以下行:AddType application/x-httpd-php .js
。或者,如果您关心性能,您可以将该代码添加到Apache配置中。
该代码的目标本质上是说,PHP应该解析所有以".js"结尾的文件,就好像它们是".PHP">
是。这是可能的。但是,您必须将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
则不会。