在.js文件中执行PHP代码

Ker*_*ill 7 php wordpress jquery

我试图让一些PHP在.js文件中执行,但显然不知道如何正确地执行它.

基本上代码是在我的页面上添加一些HTML标签,我将其用于滑动联系表单.然而,联系表单本身是通过短代码在Wordpress中完成的.所以我试图让短代码在代码中工作,使表单滑出.

var phpTest = '<?php do_shortcode("[contact-form-7 id=\'1088\' title=\'Live Chat Form\']"); ?>';

// add feedback box
$this.html('<div id="fpi_feedback"><div id="fpi_title" class="rotate"><h2>'
    + thisSettings.title
    + '</h2></div><div id="fpi_content">'
    + phpTest
    + '</div></div>');
Run Code Online (Sandbox Code Playgroud)

如果我将变量"phpTest"更改为带有文本的常规字符串,它显示正常,我只是不确定如何在此实例中执行php.

chi*_*NUT 16

编辑:脚本类型应始终text/javascriptapplication/javascript可能破坏与旧浏览器的兼容性(我认为IE8和更早版本将忽略该类型的脚本标记).但是,Content-type应该仍然是application/javascript.


您不能将php混合到一个.js文件中,就像使用普通.php文件一样,因为.js文件不是由.php引擎按.php文件的方式预处理的.

最典型的方法 - 包括js文件中的php - 只是<script>在.php文件中有内联JS(标签之间的东西).然后它将按预期工作.

另一种方法是在php中创建一个js文件,所以启动你的.php文件

<?php
header("Content-type: application/javascript");
?>
var jsvar='something';
var othervar='<?php echo $phpVar; ?>';
//<?php //some php ;?>
Run Code Online (Sandbox Code Playgroud)

然后将其包含在您的页面上

<script src='myjs.php' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)

  • 我赞成了答案.但是,您实际上是将Web服务器配置为由PHP处理的JS文件.但这是一个非常糟糕的主意,将JS与服务器代码紧密结合在一起.更好地使用AJAX或者至少在PHP中创建一个JS将使用的JSON对象 (5认同)
  • 在任何情况下,您都不希望在页面加载之上发出辅助ajax请求.将所有内容打包在一个json对象中我觉得这可能是最好的方法. (2认同)

Bri*_*ham 5

我评论说你的问题是不可能的,但确实有可能.不建议这样做,但如果您不担心可能的安全漏洞,可以通过以下方式解决问题:

使用以下.htaccess命令在与文件相同的目录中创建文件.js:

AddHandler application/x-httpd-php .js

<FilesMatch "\.js$">
    Header set Content-Type "text/javascript; charset=utf-8"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

这将以PHP的形式执行您的JavaScript文件,然后自动修复.js文件的Content-Type(因为当您添加php处理程序时它们被视为文本).

注意:虽然这是一个快速而肮脏的解决方案,但更好的方法是使用Ajax(参见chiliNUT的答案)