外部JavaScript上的echo php变量可能吗?

时间:2011-10-04 06:40:42

标签: php javascript include echo

我(绝对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;?>);

不幸的是,这似乎不起作用。 这有什么可能的解决方案吗? 任何帮助是极大的赞赏。 提前谢谢。

5 个答案:

答案 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.phpmy-external-js.js(无论您选择哪个,但我会推荐前者,因为它需要更少的配置):

<?php require_once 'file-which-defines-var1.php'; ?>

dateFuture = new Date("<?php print $var1; ?>");

注意:您应该始终使用require_once而不是includerequire,这样相同的文件永远不会包含两次,这会导致混乱的变量和碰撞的函数/类。另外,requirerequire_once案例如果无法加载脚本会导致致命错误,而includeinclude_once则不会。