在JavaScript(.js)文件中包含PHP

时间:2010-07-13 20:51:24

标签: php javascript

我有一个包含多个JavaScript函数的JavaScript文件(扩展名.js,而不是.html)。

我想调用PHP文件中的一个PHP函数,该函数只包含一个JavaScript函数中的几个PHP函数。

  • 可能吗?
  • 我是否需要在.php文件中“包含”包含PHP函数的.js文件?
  • 我该怎么做?
    例如,假设我有一个名为myLib.php的文件,其中包含一个名为myFunc的函数,该函数有两个参数(param1param2)。然后我有一个.js文件,其中包含一个名为myJsFunc的函数。如何从myFunc(JavaScript函数)中调用myJsFunc(PHP)?我不需要在.js文件中以某种方式包含PHP文件吗?

11 个答案:

答案 0 :(得分:53)

7年后更新:这是一个糟糕的建议。请不要这样做。

如果你只需要将变量从PHP传递到javascript,你可以在php / html文件中使用javascript来开始标记。

<script type="text/javascript">
    phpVars = new Array();
    <?php foreach($vars as $var) {
        echo 'phpVars.push("' . $var . '");';
    };
    ?>
</script>
<script type="text/javascript" src="yourScriptThatUsesPHPVars.js"></script>

如果您正在尝试调用函数,那么您可以像这样执行此操作

<script type="text/javascript" src="YourFunctions.js"></script>
<script type="text/javascript">
    functionOne(<?php echo implode(', ', $arrayWithVars); ?>);
    functionTwo(<?php echo $moreVars; ?>, <?php echo $evenMoreVars; ?>);
</script>

答案 1 :(得分:24)

AddType application/x-httpd-php .js

AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

在.htaccess文件中添加上述代码,并在js文件中运行php

危险:这将允许客户端潜在地查看PHP文件的内容。如果您的PHP包含任何敏感信息(通常是这样),请不要使用此方法。

如果您必须使用PHP生成JavaScript文件,那么请使用纯PHP生成整个JS文件。你可以使用普通的.PHP文件,就像通常输出html一样,区别在于使用PHP的头函数设置正确的头文件,以便将正确的mime类型返回给浏览器。 JS的mime类型通常是“ application / javascript

答案 2 :(得分:10)

PHP和JS不兼容;你可能不只是在JS中包含一个PHP函数。您可能想要做的是从JavaScript发出AJAX请求并使用PHP发送JSON响应。

答案 3 :(得分:9)

基于Blorgbeard的一个略微修改的版本,用于容易引用的关联php数组到javascript对象文字:

PHP文件(* .php)

首先使用要用于javascript文件的值定义一个数组:

<?php
$phpToJsVars = [
  'value1' => 'foo1',
  'value2' => 'foo2'    
];
?>

现在将php数组值写入javascript对象文字:

<script type="text/javascript">
var phpVars = { 
<?php 
  foreach ($phpToJsVars as $key => $value) {
    echo '  ' . $key . ': ' . '"' . $value . '",' . "\n";  
  }
?>
};
</script>

Javascript文件(* .js)

现在我们可以使用以下符号从任何其他.js文件访问javscript对象文字:

phpVars["value1"]
phpVars["value2"]

答案 4 :(得分:6)

这有点棘手,因为PHP被评估为服务器端,而javascript被评估为客户端。

我会使用javascript中的AJAX调用来调用您的PHP文件,然后使用JS在页面的某处插入返回的HTML。

答案 5 :(得分:3)

实际上,实现此目的的最佳方法是在.php中编写javascript并在单独的文件中使用jquery来使用Jquery get脚本文件或jquery在javascript将存在的doc中使用php include函数。基本上这就是它的外观。

.php文件扩展名中的动态Javascript文件 - 包含服务器预处理的php变量和脚本中需要这些变量的javascript的混合。

静态Js文件 - 使用http://api.jquery.com/jquery.getscript/http://api.jquery.com/load/

在主html页面中,将静态文件称为常规js文件。调用静态js文件将强制从服务器加载动态数据。

some file.php 1:

<?php
$somevar = "Some Dynamic Data";
?>

$('input').val(<?php echo $somevar?>);

或简单地回显诸如

之类的脚本
echo "$('input').val(".$somevar.");";

文件2:somejsfile.js:

$("#result").load( "file.php" );

文件3 myhtml.html:

<script src="somejsfile.js"></script>

我相信这回答了很多人想要混合使用php和javascript的问题。将数据处理在后台然后让用户等待数据的延迟会很好。您也可以绕过第二个文件,只需在主html页面上使用php的包含,您就可以在主页面上显示您的javascript。对于由您自己决定的表现以及您希望如何处理所有这些。

答案 6 :(得分:1)

您不能在客户端javascript中包含服务器端PHP,您必须将其移植到javascript。如果您愿意,可以使用php.js,它将所有PHP函数移植到javascript。您还可以创建一个新的php文件,该文件返回调用PHP函数的结果,然后使用AJAX调用该文件以获得结果。

答案 7 :(得分:1)

因为Javascript在浏览器,客户端和服务器端的PHP上执行,所需的是AJAX - 实质上,您的脚本向PHP脚本发出HTTP请求,传递任何所需的参数。该脚本调用您的函数,并输出结果,最终由Ajax调用拾取。通常,您不会同步执行此操作(等待结果) - AJAX中的“A”代表异步!

答案 8 :(得分:1)

您可以制作文件的双重分辨率: 以这种方式“filename.php.js”。 PHP在此文件中生成JS。 我从DB获得了所有参数。 这对xampp来说很有用。

答案 9 :(得分:1)

没有任何安全的方法可以将php个文件包含到js 中。

您可以在php文件中以 define 将您的php文件数据设为 javascript global variable 。例如,我有三个变量,我想用作js。

abc.php

<?php
$abc = "Abc";
$number = 052;
$mydata = array("val1","val2","val3");
?>
<script type="text/javascript">
var abc = '<?php echo $abc?>';
var number = '<?php echo $number ?>';
var mydata = <?php echo json_encode($mydata); ?>;
</script>

use 后,您可以直接在 js file 中使用。

abc.js

function test(){
   alert('Print php variable : '+ abc +', '+number); 
}

function printArrVar(){
  alert('print php array variable : '+ JSON.stringify(mydata)); 
}

旁边如果您有任何您不想公开显示的关键数据,那么您可以使用js加密数据。并从js获得它的原始值,所以没有人能得到它的原始价值。如果他们公开展示。

这是标准的方法,您可以将PHP脚本数据调用到js文件,而不包括js到PHP代码或PHP脚本到js。

答案 10 :(得分:1)

不要使用通用的 php 处理程序,而是使用重写来处理 1-file 异常:

将 .js 文件重命名为 .php 并重写请求以使其响应 .js 请求。如果文件由 apache 提供;添加.htaccess:

RewriteEngine on
RewriteRule myjsfile\.js myjsfile.php [L]

其次让 .php 文件伪装成 js 文件。在 php 文件中,文件开头为:

<?php header('Content-Type: application/javascript'); ?>

等等,您现在可以在“.js”文件中使用 php-tags。