我正在尝试在.js文件中执行一些PHP,但显然不知道如何正确执行。
基本上代码是在我的页面上添加一些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>');
如果我将变量“phpTest”更改为带有文本的常规字符串,它显示正常,我只是不确定如何在此实例中执行php。
答案 0 :(得分:14)
编辑:脚本类型应始终为text/javascript
,因为application/javascript
可能会破坏与旧浏览器的兼容性(我认为IE8及更早版本会忽略该类型的脚本标记) 。但是,内容类型仍应为application/javascript
。
您不能像使用普通.js
文件那样将php混合到.php
文件中,因为.js
文件未经.php
文件预处理引导.php
文件的方式。
执行此操作的最典型方法 - 包括js文件中的php - 只是在.php文件中使用内联JS(<script>
标记之间的内容)。然后它将按预期工作。
另一种方法是在php中创建一个js文件,所以用
启动你的.php文件<?php
header("Content-type: application/javascript");
?>
var jsvar='something';
var othervar='<?php echo $phpVar; ?>';
//<?php //some php ;?>
然后将其包含在您的网页上
<script src='myjs.php' type='text/javascript'></script>
答案 1 :(得分:5)
我评论说你的问题不可能,但确实有可能。 不推荐,但如果您不担心可能的安全漏洞,可以通过以下方式解决问题:
在与.htaccess
文件相同的目录中创建.js
文件,其中包含以下内容:
AddHandler application/x-httpd-php .js
<FilesMatch "\.js$">
Header set Content-Type "text/javascript; charset=utf-8"
</FilesMatch>
这将以PHP格式执行您的JavaScript文件,然后自动修复.js文件的Content-Type(因为当您添加php处理程序时它们被视为文本)。
注意:虽然这是一个快速而肮脏的解决方案,但更好的方法是使用Ajax(参见chiliNUT's Answer)
答案 2 :(得分:1)
您可以对.php文件执行ajax post请求。这是一个有点肮脏的技巧,但它的工作原理
async
通过这个技巧,你可以基本上做你想做的任何事情
答案 3 :(得分:0)
我认为你可以使用AJAX做这样的事情:
JS代码:
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
$this.html('<div id="fpi_feedback"><div id="fpi_title" class="rotate"><h2>'
+ thisSettings.title
+ '</h2></div><div id="fpi_content">'
+ xmlhttp.responseText
+ '</div></div>');
}
}
xmlhttp.open("GET","do_shortcode_file.php",true);
xmlhttp.send();
do_shortcode_file.php必须具有以下内容:
PHP代码:
<?php
echo do_shortcode("[contact-form-7 id=\'1088\' title=\'Live Chat Form\']");
答案 4 :(得分:0)
假设您的文件名是myscript.js:
你的head标签中的(它必须是一个可执行的php文件):
<head>
<script type="text/javascript">
<?php
require_once 'myscript.js';
?>
</script>
... ... 通过这种方式,您可以像执行php文件那样执行该文件