所以我试图在.js文件中使用PHP,这是我到目前为止所拥有的。
.htaccess (任何* .api.js将作为PHP处理)
<FilesMatch "^.*?api.*?$">
SetHandler php54-script
</FilesMatch>
map.api.js
<?php
header("Content-type: application/javascript");
//my php here
?>
//my javascript here
.php文件全部包括
<script type="text/javascript" src="map.api.js"></script>
由于某种原因,这不起作用,经过大量研究后我找不到解决方案。
在Chrome开发者工具中,我收到了一个错误Uncaught SyntaxError: Unexpected token <
- 非常自我解释,并不期望在<?php
文件的顶部显示map.api.js
。
此处的其他人曾尝试过在.js文件中使用PHP吗?如果有一个更好的解决方案我想知道,因为我在谷歌上找不到多少。
答案 0 :(得分:6)
创建一个带有php扩展名的文件,并将其作为javascript包含在您的网站中。
<强> map.api.js 强>
<?php
header("Content-type: application/javascript");
//my php here
?>
//my javascript here
在您的HTML文件中
<script type="text/javascript" src="map.api.php"></script>
如果你不想隐藏php扩展,你可以使用mod_rewrite(Apache):
RewriteEngine on
RewriteRule ^map.api.js$ map.api.php
答案 1 :(得分:3)
您实际上不需要将PHP设置为.api.js
文件的处理程序。只要保留.php
标题,您也可以将Content-Type
文件用作脚本。
所以你的文件应该是这样的:
<?php
header("Content-Type: application/javasctipt);
// code...
?>
alert("This is JS");
在您的HTML页面中,您可以像这样包含它:
<script src="/map.api.php"></script>
如果你想在将JS代码发送到客户端之前使用PHP来操作JS代码,这也很有用,所以你可以这样做:
<script src="/map.api.php?feature=1"></script>
并在你的PHP中:
<?php
header("Content-Type: application/javasctipt);
?>
alert("This is JS");
<?php
if ($_GET["feature"] == "1") {
echo "alert('Cool feature imported');";
}
?>
答案 2 :(得分:1)
采取反应是最好的做法。
如果你真的想在dotJS文件中执行PHP代码。
<强>的.htaccess 强>
<FilesMatch "\bapi\b">
SetHandler php54-script
</FilesMatch>
确保在Apache配置中允许.htaccess:
<Directory /your/path>
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>