繁体   English   中英

直接在js文件中包含PHP个变量

[英]Include PHP variables directly into js files

我想使用 js 代码,它适用于 php 变量。 我现在的情况:

mainFile.php

<?
    
$myPHPvar = 1234;
    
?>

<html>
<body>
MY CONTENT

<script>

var myJSvar = <? echo $myPHPvar; ?>

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

</body>
</html>

我的文件.js

// Here some js code where I access the myJSvar, which was set by $myPHPvar before
console.log(myJSvar);

这行得通。 但我想改变这种结构。 我想将 myJSvar 定义从主文件移到 jsFile 中。

但是如果我移动这一行var myJSvar = <? echo $myPHPvar; ?> var myJSvar = <? echo $myPHPvar; ?> var myJSvar = <? echo $myPHPvar; ?>进入 myFile.js 它将不起作用,因为这不是 php 文件。

不是我认为这可能是一个解决方案:

我将 myFile.js 重命名为 myFile.php 并更改代码如下:

// 这里是我访问 myJSvar 的一些 js 代码,它是之前由 $myPHPvar 设置的

<script>
var myJSvar = <? echo $myPHPvar; ?>
console.log(myJSvar);
</script>

在 mainFile.php 中,我将<script src="myFile.js"></script>更改为include('myFile.php');

这行得通!

但是:第一个问题:这样做是个好主意吗? 第二:现在的“问题”:我所有的文件现在都是 php 个文件,也是文件,主要包括 js 代码。 这不是很漂亮,因为现在我在第一个视图上看不到哪个是 js 文件,哪个是 php 文件。

感谢您的支持 !

使用 PHP,将值回显到页面上隐藏的 HTML 字段。

当您知道页面已完成加载时,请使用 JavaScript 将它们读回。

Note, Ideally, you'd just make the data a separate AJAX/xhr/fetch call to a URL (JSON or XML formatted data is nice for this), but as a stop-gap, hidden fields will do the trick for basic PHP页。

同样,您可以回显一些内联 JavaScript(标签和所有)并在其他地方引用变量。 这种方法会起作用,但通常被称为“意大利面条代码”,因为交织在一起的前端 (JavaScript) 和后端 (PHP) 代码使得调试变得棘手,并且不能很好地扩展到更大的代码项目......数月或数年之后,开发人员会发现自己在代码的位置、生成方式、新代码应该放置的位置等问题上摸不着头脑。

从技术上讲,这是可能的,但在标准使用中,不建议这样做。 为什么需要 PHP 来设置变量的值? 如果数据来自数据库,您可以考虑使用 ajax。 这样您就可以将后端文件保存在其他地方。

你可以这样做。 它并没有什么真正的问题。 您必须以某种方式将数据带到客户端浏览器。 您可以这样做: 1. 在 DOM 中设置 php 变量 2. XHR 调用或 3. cookies

这可以通过动态生成 JS 文件来实现...您可以创建一个 PHP 文件,该文件将动态生成 JS,例如:

注意:强烈不推荐使用此方法。 这仅供您参考和了解。

myFile.php(JS 等效文件)

console.log(123)

您的 HTML 文件

<script type="text/javascript" src="a.php"></script>

但强烈不建议这样做,因为 JS 文件是可以缓存的 static 资源。 使用此方法将在每次页面加载时请求 JS 文件(只有在第一次加载时才会传输它的静态文件)。

最好的方法是将动态变量保留在 HTML 中,然后包含将使用这些变量的 static JS 文件。

暂无
暂无

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

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