在.js文件中执行PHP代码

时间:2014-05-09 21:31:31

标签: php jquery wordpress

我正在尝试在.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。

5 个答案:

答案 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文件那样执行该文件