将PHP变量传递给非本地JavaScript
Passing PHP variables to non-native JavaScript
基本上,问题是:
<?php $test="foobar"; ?>
如果在html文档中,我调用
<script type="text/javascript">alert("<?php echo $test; ?>")</script>
,一切都很好。
然而,如果我在附带的外部jS文档中做同样的事情
<script type="text/javascript" src="foo.js"></script>
它不起作用。
有办法做到这一点吗?
在第一种情况下,您实际将值传递给PHP脚本,其中<?php echo $test; ?>
由PHP解析器解析,并替换为$test
PHP变量的值。
在第二种情况下,您只需将"<?php echo $test; ?>
"字符串包含到JS文件中,就不会对其进行解析。
我的建议是:以现在传递的方式传递这个值,但要从外部JS文件中正确引用它。例如,您可以调用JS文件中定义的一些函数,从PHP文件中传递参数。
还有一种丑陋的方法,比如让服务器将JS文件视为PHP文件,但我不建议这样做
例如:
如果你在你的PHP文件中包括:
<script type="text/javascript" src="foo.js"></script>
<script type="text/javascript">myHappyFunction("<?php echo $test; ?>")</script>
并且在您的JS文件(foo.JS)中:
(function(){
var myHappyFunction = function(myParameter){
alert(myParameter);
};
window['myHappyFunction'] = myHappyFunction; // pass outside scope
})();
当脚本执行时,您应该会看到$test
值被警告(假设我没有写错;))。
您可以尝试以下操作:
http://www.javascriptkit.com/javatutors/externalphp.shtml
外部文件不必是.js扩展名。或者,您可以将.js文件与apache(或运行的任何Web服务器)中的PHP文件相关联。将JS文件保存为.php可能是最简单的,但请记住,它不会与呈现页面的脚本共享相同的变量。
如果您想在JavaScript文件中处理PHP,您有几个选项。在典型的Apache设置中,扩展名为.php
.php3
.php4
.php5
的PHP文件是在配置文件中专门定义的,允许PHP对其进行解析。默认情况下,Apache不会将JavaScript和其他文件(如图像)视为PHP文件。如果Apache这样做,性能就会下降。下面是我们可以做的…
选项A
选项A将所有JavaScript文件视为PHP文件,因此任何PHP都将被处理,同时将JavaScript输出到浏览器。您需要在开始时添加一个header()调用,以确保浏览器知道它是一个JavaScript文件。
httpd.conf
AddType application/x-httpd-php .js
选项B
选项B允许您将代码添加到Apache配置文件中,以将所有JS请求路由到PHP文件进行处理。在此选项中,scripts.php文件将处理$_REQUEST['src']变量,并获取适当的JS文件。
.htaccess(未测试,但类似的东西应该可以工作):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(*'.js)$ scripts.php?src=$1 [L,QSA]
</IfModule>
- AJAX Post的奇怪Javascript/PHP行为
- 带有输入参数的Javascript/PHP中的XMLHTTPrequests
- 用Javascript/PHP创建字典
- 如何记录用户'使用Javascript/PHP的语音
- fetch data from db using javascript & php
- onClick按钮不工作javascript/php/jquery mobile
- 通过Javascript(PHP循环)添加类
- Javascript php onclick
- Interfacing html, javascript, php and mysql
- Javascript/PHP Validation
- JavaScript/PHP 刷新取代了 HTML 元素类
- Cross-domain javascript <-> php
- 设置计时器并使用javascript/PHP进行检查
- Javascript/Php聊天-输入is'不能在一个文本框中工作
- AJAX (JavaScript / PHP), FormData not sending
- Javascript/PHP中的HTML转义/编码
- 我想在Iframe Javascript PHP的帮助下,将单个ajax上传器脚本转换为多个上传器
- javascript/php中的批量打印
- Javascript/PHP,使用文本文件作为数据库,并将内容组织到阵列表中
- JavaScript/PHP函数不会发布到其他页面