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

IT技术 php javascript
2021-01-25 23:22:04

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

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

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

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>
已经将近 6 年了,这仍然偶尔会被点赞。这绝对是一个糟糕的建议。您应该认真考虑为什么需要这样做,并考虑替代结构。如果这些变量会随着时间的推移而改变,也许可以创建一个代表您需要的 AJAX 端点。如果它们真的只在请求时重要,那么至少<meta>为每个变量做一个标记并读取它,而不是用 PHP 生成 JavaScript。
2021-03-12 23:22:04
赞成,只是为了打扰您:P - 因为它是一个高度赞成的答案,所以可能会将替代(更好的解决方案)作为答案的一部分,而不仅仅是评论?
2021-03-13 23:22:04
当然,它在架构上不是很好,但对于需要快速而肮脏的方法的初学者来说,它工作正常。我已经添加json_encode()到答案中以使其更安全。
2021-03-18 23:22:04
它完全没有意义,而且容易注入。phpvars = <?php echo json_encode($vars); ?>;保证生成语法正确的 JS,而如果'插入文本中的任何位置有单个或其他 JS 元字符,则上述内容将终止整个脚本块
2021-03-25 23:22:04
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 文件的内容吗”
2021-03-23 23:22:04
现在 php 页面在访问时下载
2021-04-01 23:22:04

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

+1 你甚至不需要 JSON 响应,它真的可以是任何东西;只要你能以一种有意义的方式在 JS 中解析/使用它。
2021-03-14 23:22:04

一个基于 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"]
为什么这比json_encode($phpToJsVars)?
2021-03-12 23:22:04

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

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