2014-05-09 110 views
7

我试图让一点PHP在.js文件中执行,但显然不知道如何正确执行。在.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。

+4

PHP是JavaScript的调用之前执行的任何事情,因此这将**“从来没有” **工作。 –

+1

尝试将文件另存为.php而不是.js。然后将此代码放在'

4

我评论说,上你的问题是不可能的,但这确实是可能的。 这是不推荐,但如果你不担心可能的安全漏洞,这里是一个方法来完成你的问题:

创建.htaccess文件在同一目录作为您.js文件,具有下列内容:

AddHandler application/x-httpd-php .js 

<FilesMatch "\.js$"> 
    Header set Content-Type "text/javascript; charset=utf-8" 
</FilesMatch> 

这将执行JavaScript文件作为PHP,然后修复的Content-Type的.js文件自动(因为当你添加PHP处理他们视为文本)。

注意:虽然这是一个快速和肮脏的解决方案,更好的办法是使用Ajax(见chiliNUT's Answer

+0

你可以建议一个更好的方法,因为你知道这个缺点?顺便说一下,我认为主要问题不是安全漏洞。 –

+0

我想要展示的表单有它自己的安全/验证,但是我认为你的意思是它会打开不同的安全问题。我可以使用确切的.js文件名,而不是使用毯子“.js”,因此它只影响一个.js文件,而不是影响我网站上的所有.js文件? –

+0

@KerynGill是的,你可以用'^ filename.js $'替换'\ .js $'。 –

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\']"); 

AJAX Tutorial at w3schools.com一些细节和关于Ajax的一个很好的例子。

0

假设你的文件名是myscript.js:

在你的脑袋标签

(它必须是一个可执行的PHP文件):

<head> 
<script type="text/javascript"> 
<?php 
require_once 'myscript.js'; 
?> 
</script> 

... ... 这样 你能够执行该文件,就像它是一个PHP文件

1

您可以对.php文件执行ajax post请求。这是一个有点使坏,但它的工作原理

$.post('thePhpFile',{var1:var1,var2:var2},function(result){ 
    //Code to do with the resulted... like $("#div").html(result); 
}); 

的那套把戏,你可以basicaly做你想做