【问题标题】:Getting PHP variable in Javascript code在 Javascript 代码中获取 PHP 变量
【发布时间】:2013-11-12 20:37:21
【问题描述】:

我正在尝试在 Javascript 中使用 PHP 变量,但我不能。在编写了超过 2000 行不同的 JS 函数之后,我很好地避免了这种情况,但现在我真的需要它。我对解决这个问题的所有方法都有些迷茫,但没有什么真正奏效。这是我的顺序:

index.html 文件:

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

myfunctions.js 文件:

....
function test() {
    var x = <?php echo $_conf['user_id'];?>
    console.log(x);
}

我试图将 .js 文件重命名为 .php 文件并添加

header("Content-type: text/javascript");

一开始 - 那没用。我试图用

制作 .htaccess 文件
AddType application/x-httpd-php .js

但这也没有用。我可能只是错过了一件小事。我只是需要一个新鲜而聪明的人来指出这一点。

【问题讨论】:

  • echo 不是 Javascript。至少,试试return

标签: javascript php apache .htaccess


【解决方案1】:

你可以在你的 JS 代码中做这样的事情。

var php_var = "<?php echo $_conf['user_id'];?>"

【讨论】:

  • 从那里取出多余的echo,然后关闭?&gt;
【解决方案2】:

你的javascript文件应该命名为“javascript.php”(只要输入你想要的名称,唯一重要的是.php

你有一个 index.php

写在你的 index.php 中

include("javascript.php");

然后在你的 javascript.php 中

<script>
function test(){
     var variable = "<? echo $conf['user_id'] ?>";
     alert(variable);
}
<script>

PS:你不需要任何标题。

【讨论】:

  • 这似乎是唯一完全正确的答案。更改文件扩展名,并添加var something=
  • 我同意这个是正确的答案,事实上只有这个有效。但我注意到一件事 - javascript.php 文件中的所有功能现在都在页面上可见,即如果我将该页面保存在磁盘上,我会看到所有功能,而当它是 .js 文件时,用户无权访问对那些。这会是安全问题吗?
  • 用户可以随时访问您的 JavaScript 代码,即使在 .js 文件中也是如此。如果他们下载它不会保存在文件中,但他们仍然会知道URL并可以单独下载。
【解决方案3】:

由于您是通过 &lt;script&gt; 标记执行此操作的,因此您的 PHP 脚本必须输出有效的 Javascript 代码,就好像您要手动输入变量赋值一样。这意味着执行以下操作:

HTML/JS:

<script src="myscript.php"></script>

PHP:

<?php
$myvar = 'foo';
?>

var myvar = <?php echo json_encode($myvar); ?>;

这最终会产生一些功能,就像您手动输入以下内容一样:

<script>
var myvar = 'foo';
</script>

注意json_encode() 的使用。使用它可以确保您从 PHP 输出的任何内容都将成为语法上有效的 Javascript。

【讨论】:

  • 为什么是 json ?不需要......你可以使用 var myvar = '';我每次都用它...
  • 这是一种安全措施。考虑$name = "Miles O'Brien" 并将其回显到 JS 块中。繁荣。语法错误。吻你的脚本块再见。
【解决方案4】:

您没有将 PHP 值分配给 Javascript 变量。试试:

var v = "<?php echo $_conf['user_id'];?>";

【讨论】:

  • @NelsonGaldemanGraziano:谢谢,问题的复制/粘贴错误。已更正。
【解决方案5】:

index.html

 ..
<script src="myfunctions.js.php" />
 ...

myfunctions.js.php

<?php
header('Content-Type: text/javascript');
 ...
?>
var val = <?php echo json_encode($val); ?>;
 ...

【讨论】:

    【解决方案6】:

    其他可能的解决方案是将服务器端数据分配给 html 中的属性并在 javascript 中读取它们。例如 index.html 可能包含如下内容:

    <div id="user-profile" data-user-id="<?php echo $conf['user_id']; ?>"></div>
    

    在 js 文件中,你可以在必要时获取它们(以 jQuery 为例):

    var userID = $('#user-profile').attr('data-user-id');
    

    当然你应该调整你的服务器端设置来处理 html 文件。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2015-05-11
      相关资源
      最近更新 更多