繁体   English   中英

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

[英]Include PHP inside JavaScript (.js) files

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

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

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

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

如果您只需要将变量从 PHP 传递到 javascript,您可以使用 javascript 在 php/html 文件中添加一个标签。

<script type="text/javascript">
    var phpVars = <?php echo json_encode($vars) ?>;
</script>
<script type="text/javascript" src="yourScriptThatUsesPHPVars.js"></script>

如果你想调用函数,那么你可以这样做

<script type="text/javascript" src="YourFunctions.js"></script>
<script type="text/javascript">
    // assume each element of $arrayWithVars has already been json_encoded
    functionOne(<?php echo implode(', ', $arrayWithVars); ?>);

    functionTwo(<?php echo json_encode($moreVars) ?>, <?php echo json_encode($evenMoreVars) ?>);
</script>
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 的 header 函数设置正确的标头,以便将正确的 mime 类型返回给浏览器。 JS 的 mime 类型通常是“ application/javascript

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

一个基于 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"]

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

我会使用 JavaScript 内部的 AJAX 调用来调用您的 PHP 文件,然后使用 JS 将返回的 HTML 插入您页面上的某个位置。

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

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

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

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

一些 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。 性能取决于您以及您希望如何处理所有这些。

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

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

您可以通过这种方式对 file: "filename.php.js" 进行双重解析。 PHP 在这个文件中生成 JS。 我从数据库中获得了所有参数。 这在 xampp 上对我有用。

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

您可以做的一件事是define 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>

在您想要使用的任何地方直接在您的js file use它之后。

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 中的标准方法。

不是使用通用的 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM